[Laszlo-checkins] r7140 - in openlaszlo/branches/paperpie: . WEB-INF/lib WEB-INF/lps/lfc WEB-INF/lps/lfc/compiler WEB-INF/lps/lfc/controllers 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/helpers WEB-INF/lps/lfc/kernel WEB-INF/lps/lfc/kernel/dhtml WEB-INF/lps/lfc/kernel/swf WEB-INF/lps/lfc/kernel/swf9 WEB-INF/lps/lfc/services WEB-INF/lps/lfc/services/platform/dhtml WEB-INF/lps/lfc/services/platform/swf WEB-INF/lps/lfc/views WEB-INF/lps/schema WEB-INF/lps/server/jgenerator-2.2/src/org/openlaszlo/iv/flash/url WEB-INF/lps/server/src/org/openlaszlo/compiler WEB-INF/lps/server/src/org/openlaszlo/data WEB-INF/lps/server/src/org/openlaszlo/js2doc WEB-INF/lps/server/src/org/openlaszlo/sc demos/amazon docs docs/component-design docs/src/developers docs/src/developers/programs docs/src/reference laszlo-explorer/coverpages lps/admin lps/components/base lps/components/lz lps/includes/source test test/lztest

ben@openlaszlo.org ben at openlaszlo.org
Mon Nov 5 15:36:08 PST 2007


Author: ben
Date: 2007-11-05 15:35:46 -0800 (Mon, 05 Nov 2007)
New Revision: 7140

Added:
   openlaszlo/branches/paperpie/WEB-INF/lib/xpp3-1.1.4c.jar
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/Library.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzAudio.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzContextMenu.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzFontManager.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzFunctions.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzHTTPLoader.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzInputTextSprite.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzKeyboardKernel.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzLibrary.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzLibraryLoader.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzLoadQueue.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzLoader.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzMakeLoadSprite.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzMediaLoader.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzMouseKernel.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzRequires.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzScreenKernel.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzSoundMC.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzSprite.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzTextSprite.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzXMLParser.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzXMLTranslator.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/data/HttpData.java
   openlaszlo/branches/paperpie/docs/src/developers/data-chapters-outline-new
   openlaszlo/branches/paperpie/docs/src/developers/programs/debug-mon-trace.lzx
   openlaszlo/branches/paperpie/test/trycatch.lzx
Removed:
   openlaszlo/branches/paperpie/WEB-INF/lib/ftp.jar
   openlaszlo/branches/paperpie/WEB-INF/lib/iso-relax.jar
   openlaszlo/branches/paperpie/WEB-INF/lib/jing.jar
   openlaszlo/branches/paperpie/WEB-INF/lib/xpp3-1.1.3.4d_b4.jar
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/Library.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzAudio.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzContextMenu.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzFontManager.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzFunctions.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzHTTPLoader.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzInputTextSprite.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzKeyboardKernel.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzLibrary.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzLibraryLoader.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzLoadQueue.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzLoader.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzMakeLoadSprite.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzMediaLoader.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzMouseKernel.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzRequires.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzScreenKernel.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzSoundMC.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzSprite.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzTextSprite.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzXMLParser.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzXMLTranslator.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/server/jgenerator-2.2/src/org/openlaszlo/iv/flash/url/FTPUrl.java
   openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/js2doc/SchemaValidator.java
Modified:
   openlaszlo/branches/paperpie/
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/LaszloLibrary.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/compiler/Class.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/compiler/LzFormatter.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/controllers/LzAnimatorGroup.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/core/LzDefs.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/core/LzNode.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/core/UserClass.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDataElement.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDataNode.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDataRequest.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDataText.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDatapath.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDatapointer.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDataset.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzReplicationManager.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/debugger/LzDebug.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/debugger/platform/dhtml/LzDebug.js
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/debugger/platform/swf/LzDebug.as
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/helpers/LzCommand.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/helpers/LzState.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/dhtml/LzContextMenu.js
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/dhtml/LzHTTPLoader.js
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/dhtml/LzLibrary.js
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzContextMenu.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzInputTextSprite.as
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzLoadQueue.as
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzLoader.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzMediaLoader.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzSprite.as
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzTextSprite.as
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/LzFocus.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/LzGlobalMouse.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/LzIdle.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/LzModeManager.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/platform/dhtml/LzHistory.js
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/platform/dhtml/LzKeys.js
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/platform/swf/LzHistory.as
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/platform/swf/LzKeys.as
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/views/LaszloCanvas.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/views/LaszloView.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/views/LzInputText.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/lfc/views/LzText.lzs
   openlaszlo/branches/paperpie/WEB-INF/lps/schema/lfc.lzx
   openlaszlo/branches/paperpie/WEB-INF/lps/server/jgenerator-2.2/src/org/openlaszlo/iv/flash/url/IVUrl.java
   openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/compiler/CompilationEnvironment.java
   openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/compiler/NodeModel.java
   openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/compiler/Parser.java
   openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/compiler/ViewSchema.java
   openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/data/DataSource.java
   openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/data/HTTPDataSource.java
   openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/data/XMLGrabber.java
   openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/js2doc/JS2DocUtils.java
   openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/js2doc/JS2Doc_Test.java
   openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/js2doc/Main.java
   openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/js2doc/Schema_Test.java
   openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/js2doc/WholeFile_Test.java
   openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/sc/Actions.java
   openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/sc/Assembler.java
   openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/sc/CodeGenerator.java
   openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/sc/CommonGenerator.java
   openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/sc/InstructionCollector.java
   openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/sc/Instructions.java
   openlaszlo/branches/paperpie/demos/amazon/amazon.lzx
   openlaszlo/branches/paperpie/demos/amazon/classlib.lzx
   openlaszlo/branches/paperpie/demos/amazon/recommendation.lzx
   openlaszlo/branches/paperpie/docs/component-design/index.html
   openlaszlo/branches/paperpie/docs/index.html
   openlaszlo/branches/paperpie/docs/src/developers/classes-introductory.dbk
   openlaszlo/branches/paperpie/docs/src/developers/classes-powerprogramming.dbk
   openlaszlo/branches/paperpie/docs/src/developers/debugging.dbk
   openlaszlo/branches/paperpie/docs/src/developers/ecmascript-and-lzx.dbk
   openlaszlo/branches/paperpie/docs/src/developers/language-preliminaries.dbk
   openlaszlo/branches/paperpie/docs/src/developers/methods-events-attributes.dbk
   openlaszlo/branches/paperpie/docs/src/developers/programs/class-inheritance-$25.lzx
   openlaszlo/branches/paperpie/docs/src/developers/programs/class-inheritance-$26.lzx
   openlaszlo/branches/paperpie/docs/src/developers/programs/class-inheritance-$27.lzx
   openlaszlo/branches/paperpie/docs/src/developers/programs/class-inheritance-$29.lzx
   openlaszlo/branches/paperpie/docs/src/developers/programs/debugging-$2.lzx
   openlaszlo/branches/paperpie/docs/src/developers/programs/text-$6.lzx
   openlaszlo/branches/paperpie/docs/src/developers/programs/text-$7.lzx
   openlaszlo/branches/paperpie/docs/src/developers/proxied.dbk
   openlaszlo/branches/paperpie/docs/src/developers/text.dbk
   openlaszlo/branches/paperpie/docs/src/reference/preface.dbk
   openlaszlo/branches/paperpie/laszlo-explorer/coverpages/getting_started.html
   openlaszlo/branches/paperpie/lps/admin/solo-deploy.jsp
   openlaszlo/branches/paperpie/lps/admin/solo-dhtml-deploy.jsp
   openlaszlo/branches/paperpie/lps/components/base/basedatacombobox.lzx
   openlaszlo/branches/paperpie/lps/components/base/basegridrow.lzx
   openlaszlo/branches/paperpie/lps/components/lz/edittext.lzx
   openlaszlo/branches/paperpie/lps/includes/source/embednew.js
   openlaszlo/branches/paperpie/lps/includes/source/lzhistory.js
   openlaszlo/branches/paperpie/test/lztest/lztest-class-impl.lzx
   openlaszlo/branches/paperpie/test/lztest/lztest-text.lzx
Log:
Merged revisions 7011-7041,7043,7045-7136 via svnmerge from 
http://svn.openlaszlo.org/openlaszlo/trunk

.......
  r7020 | ptw | 2007-10-26 10:32:16 -0700 (Fri, 26 Oct 2007) | 36 lines
  
  Change 20071026-ptw-Y by ptw at dueling-banjos.local on 2007-10-26 08:01:02 EDT
      in /Users/ptw/OpenLaszlo/ringding-2
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Fix order of array indices that was broken by r6857
  
  Bugs Fixed:
  LPP-4967 'Array indices out of order in Debugger'
  
  Technical Reviewer: promanik (Message-Id: <20071026151118.E959FF2ED4 at hemicuda.laszlosystems.com>)
  QA Reviewer: max (pending)
  Doc Reviewer: (pending)
  
  Details:
      Convert indices to numbers for sorting
  
  Tests:
      lzx> Debug.inspect([1,2,3,4,5,6,7,8,9,10,11,12])
      ?\194?\171Array(12)#0| [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]?\194?\187 {
      0: 1
      1: 2
      2: 3
      3: 4
      4: 5
      5: 6
      6: 7
      7: 8
      8: 9
      9: 10
      10: 11
      11: 12
      }
      [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
      lzx> 
.......
  r7021 | pbr | 2007-10-26 12:18:16 -0700 (Fri, 26 Oct 2007) | 1 line
  
  svn copy of files from /kernel/swf to /kernel/swf9. This will make it easier to review the swf9 files.
.......
  r7024 | ptw | 2007-10-26 13:20:28 -0700 (Fri, 26 Oct 2007) | 30 lines
  
  Change 20071026-ptw-V by ptw at dueling-banjos.local on 2007-10-26 15:54:26 EDT
      in /Users/ptw/OpenLaszlo/ringding-2
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Define Undefined instance variable in LzCommand
  
  Bugs Fixed:
  LPP-4590 'DHTML: Javascript error if menu Command missing "key" attribute'
  
  Technical Reviewer: promanik (Message-Id: <20071026201502.58C67F41EF at hemicuda.laszlosystems.com>)
  QA Reviewer: sosullivan (pending)
  Doc Reviewer: ben (pending)
  
  Details:
      Test for LzCommand#keys being null before using it.  Also finished
      implementation of DisplayKeys.  Documented that LZCommand#keys can
      be null.
  
      Question for the doc reviewer:  In the command open tag, you
      specify the shortcut key combination with the attribute `key`, but
      this is stored as the attribute `keys`.  What is the proper way to
      document this?  I believe the `keys` attribute should be private
      and I should be documenting the "virtual" attribute `key`
      instead.  Or should I be filing an API change request to rename
      the `keys` attribute to `key`?
  
  Tests:
      Test case from bug no longer gets reported error.
.......
  r7029 | lou | 2007-10-28 10:12:11 -0700 (Sun, 28 Oct 2007) | 38 lines
  
  Change 20071022-lou-U by lou at loumac.local on 2007-10-22 19:00:17 AST
      in /Users/lou/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: improve preface to the Reference
  
  New Features: 
  
  sect 1, other sources of information:
        change simple list to nested bulleted list
        add components and admin guides to list
        change titles of docs to match dguide and others
        add description to each item in list
        add description of Laszlo Explorer
        fix link to section 6.2 Attribute Types
        added link to section Combining Tags and Script in LZX Programs
          (I think this addresses the second paragraph after the bulleted list in
          the JIRA report.)
  
  In language priliminaries:
        add id tag to section so we can link to section Combining Tags and Script in LZX Programs
  
  In docs/index.html
        change titles to match the rest of the doc
  
  in docs/component-design/index.html:
        change title ot match the rest of the doc
  
  in methods-events-attributes.dbk
        add id to section Attribute types so the reference can xref here
  
  Bugs Fixed: LPP-3733
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: John Sundman
.......
  r7041 | hqm | 2007-10-29 12:56:44 -0700 (Mon, 29 Oct 2007) | 40 lines
  
  Change 20071028-hqm-a by hqm at IBM-2E06404CB67 on 2007-10-28 21:25:46 EDT
      in /cygdrive/c/users/hqm/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: make solo deployers careful about existing lps directory
  
  New Features:
  
  Bugs Fixed: LPP-4619
  
  Technical Reviewer: max
  QA Reviewer: jcrowley
  Doc Reviewer: 
  
  Documentation:
  
  Release Notes:
  
  Details:
  
  When you run the SOLO deployer wizard, it creates several files, such as foo.lzx.html
  wrapper,and some files in a subdirectory named "lps".
  
  If you attempt to run the wizard again over a directory which is unpacked
  from an archive produced by the SOLO wizard, it will choke when it tries to
  write its own duplicate files to the new archive. 
  
  This fix reorganizes the creation of files, all new files are created first,
  and then as files are added from disk, they are checked to make sure they do
  not overwrite in the archive any files which were created by the wizard.
  
      
  
  Tests:
  
  take an app, SOLO -deploy it, unpack in another dir, and try to run SOLO deployer
  wizard on that directory. Verify that the archive can be unpacked elsewhere and
  run SOLO.
.......
  r7047 | pbr | 2007-10-30 06:46:08 -0700 (Tue, 30 Oct 2007) | 42 lines
  
  Change 20071029-Philip-8 by Philip at Philip-DC on 2007-10-29 20:31:58 EDT
       in /cygdrive/f/laszlo/svn/src/svn/openlaszlo/trunk
       for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Make LzText.setMaxLength() consistent across runtimes
  
  New Features:
  
  Bugs Fixed: LPP-4775
  
  Technical Reviewer: Andr?\195?\169 Bargull
  QA Reviewer: jcrowley
  Doc Reviewer: (pending)
  
  Documentation:
  
  Release Notes:
  
  Details:
  http://www.openlaszlo.org/jira/browse/LPP-2208
  fixed setMaxLength in all but one case.
  
  LzText.lzs: If you call setMaxLength() after you set the text for LzText or LzInputText, the string isn't clipped to the specified length. I modified setMaxLength() to call setText to handle the clipping (and sending the necessary events if the text is changed).
  
  lztest-text.lzx: Added a test to verify that the text is truncated after setMaxLength is called.
  
  
  Tests:
  http://localhost:8080/trunk/test/lztest/lztest-text.lzx 
  in swf/dhtml. No setMaxLength() errors should be reported.
  
  See LPP-4775 for an additional test. The unit test covers this case.
  
  I tested with FF and IE7 swf/dhtml.
  
  Files:
  M      test/lztest/lztest-text.lzx
  M      WEB-INF/lps/lfc/views/LzText.lzs
  
  Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20071029-Philip-8.tar
.......
  r7049 | lou | 2007-10-30 13:35:20 -0700 (Tue, 30 Oct 2007) | 14 lines
  
  Change 20071030-lou-D by lou at loumac.local on 2007-10-30 15:04:28 AST
      in /Users/lou/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: remove "try-catch" from list of unsupported javascript thingies
  
  Bugs Fixed: LPP-4996
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: John Sundman
.......
  r7053 | lou | 2007-10-31 02:16:21 -0700 (Wed, 31 Oct 2007) | 20 lines
  
  Change 20071031-lou-e by lou at loumac.local on 2007-10-31 04:58:21 AST
      in /Users/lou/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: fix docbook problems in the debugging chapter of the dguide
  
  Bugs Fixed: LPP-4998
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: John Sundman
  
  Documentation: 
  
  Added debug-mon-trace.lzx
  Changed debug-mon-trace.lzx so debugger window is viewable without moving
  Fix docbook problems in debugging.dbk
.......
  r7055 | lou | 2007-10-31 05:14:10 -0700 (Wed, 31 Oct 2007) | 35 lines
  
  Change 20071031-lou-0 by lou at loumac.local on 2007-10-31 08:00:09 AST
      in /Users/lou/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: examples in class inheritance chapter report errors during build
  
  Bugs Fixed: LPP-5001
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: John Sundman
   
  
  Details:
  change
  
  defaultplacement="'red'"
  
  to
  
  defaultplacement="red"
  
  in these files
  
  class-inheritance-$25.lzx
  class-inheritance-$26.lzx
  class-inheritance-$27.lzx
  class-inheritance-$29.lzx
  
  Remove from classes-powerprogramming.dbk commented out code that the build ignored
      
  
  Tests:
.......
  r7057 | lou | 2007-10-31 05:30:30 -0700 (Wed, 31 Oct 2007) | 24 lines
  
  Change 20071031-lou-l by lou at loumac.local on 2007-10-31 08:16:54 AST
      in /Users/lou/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: examples text-$6.lzx and text-$7.lzx in text views chapter of the dguide need minor clarification
  
  Bugs Fixed: LPP-5000
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: John Sundman
  
  
  Details:
  
  change example text to clarify examples
  change example titles to clarify examples
  remove comment from text-$6.lzx so it doesn't show up in the html file
  remove from text.dbk commented out code examples that the build ignored
      
  
  Tests:
.......
  r7059 | lou | 2007-10-31 10:50:45 -0700 (Wed, 31 Oct 2007) | 27 lines
  
  Change 20071031-lou-F by lou at loumac.local on 2007-10-31 11:08:59 AST
      in /Users/lou/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Chapter 25 Section 3.1.1 correct example url and minor error in following information
  
  Bugs Fixed: LPP-4927
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: John Sundman
  
  Documentation:
  
  Release Notes:
  
  Details:
  changed 
  http://localhost:8888/[server]/crossdomain.xml
  to
  http://[server]/crossdomain.xml 
  
  change browser warning to Flash warning, and make it a <note>
  
  Tests:
.......
  r7066 | dda | 2007-10-31 12:59:20 -0700 (Wed, 31 Oct 2007) | 36 lines
  
  Change 20071029-dda-s by dda at freddie.local on 2007-10-29 22:24:27 EDT
      in /Users/dda/laszlo/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: support try/catch/finally and throw statements in SWF7/8
  
  New Features: try/catch/finally supported in SWF7/8.
  
  Bugs Fixed:  LPP-1539
  
  Technical Reviewer: ptw
  QA Reviewer: maxcarlson
  Doc Reviewer: (pending)
  
  Documentation:
  
  Release Notes:
      try, catch, finally, throw statements are now supported in SWF7/8 as well as DHTML
      runtimes.
  
  Details:
      try/catch/finally are very helpful in creating a reliable software.
      It should help in consolidating/maintaining code in the runtime kernel,
      since DHTML already supports try/catch and we won't need to have
      alternate implementations of error handling code.
  
  Tests:
      created some simple tests using try/catch/finally,
      also try/catch (no finally).  Had some problems with
      my try/finally (no catch) example.
      The only way I've found to trigger an exception
      in SWF7/8 is to use an explicit throw statement,
      since the SWF instruction set seems to continue to operate
      with various kinds of errors.
.......
  r7067 | bargull | 2007-10-31 13:00:09 -0700 (Wed, 31 Oct 2007) | 27 lines
  
  Change 20071031-bargull-0 by bargull at dell--p4--2-53 on 2007-10-31 00:07:43
      in /home/Admin/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Fixed typo in edittext#setMaxlength(..)
  
  New Features:
  
  Bugs Fixed:
  LPP-3329 - "The "setMaxlength" method in the "edittext" class doesn't work"
  
  Technical Reviewer: pbr
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
  
  Documentation:
  
  Release Notes:
  
  Details:
  Nothing special, just fixed a typo in edittext#setMaxlength(..). 
  edittext attempts to call "setMaxlength" on its inputtext-field, but actually this method is called "setMaxLength".
  
  
  Tests:
.......
  r7075 | lou | 2007-10-31 19:14:23 -0700 (Wed, 31 Oct 2007) | 15 lines
  
  Change 20071031-lou-x by lou at loumac.local on 2007-10-31 22:09:49 AST
      in /Users/lou/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: dguide broken links: links containing /guide/ should be /developers/
  
  Bugs Fixed: LPP-4923
  
  Technical Reviewer: (pending)
  QA Reviewer: frisco de rosario
  Doc Reviewer: (pending)
  
  Details: change ulink to xref to fix broken link
.......
  r7076 | jcrowley | 2007-10-31 19:56:13 -0700 (Wed, 31 Oct 2007) | 25 lines
  
  Change 20071025-jcrowley-Q by jcrowley at doctormanhattan.mshome.net on 2007-10-25 12:33:10 EDT
      in /Users/jcrowley/src/svn/openlaszlo/trunk-a
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Broken link in Getting Started in Laszlo Explorer
  
  New Features:
  
  Bugs Fixed: LPP-4869 - Broken link in Getting Started in Laszlo Explorer
  
  Technical Reviewer: pbr
  QA Reviewer: ben
  Doc Reviewer: 
  
  Documentation:
  
  Release Notes:
  
  Details: Fixed the link so that it points to the appropriate
  	place in the documentation.
  
  Tests: Build docs.  Run Laszlo Explorer.  Click "Getting Started".
  	Click the link at the very end, from the word "here".
.......
  r7077 | bargull | 2007-11-01 06:39:52 -0700 (Thu, 01 Nov 2007) | 30 lines
  
  Change 20071020-bargull-2 by bargull at dell--p4--2-53 on 2007-10-20 17:11:11
      in /home/Admin/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Two improvements for LzHTTPLoader.js
  
  New Features:
  
  Bugs Fixed:
  LPP-4945 - Improvements for "LzHTTPLoader.prototype.loadXMLDoc"
  
  
  Technical Reviewer: hminsky
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
  
  Documentation:
  
  Release Notes:
  
  Details:
  Timeout checking was not removed for erroneous requests in non-proxied DHTML applications, this is now fixed.
  To test this, you need to uncomment the Debug.write statements in LzHTTPLoader.prototype.removeTimeout and LzHTTPLoader.__LZcheckXMLHTTPTimeouts. You can see, that erroneous requests were still checked against timeouts.
  Additionally, the try..catch block in "LzHTTPLoader.prototype.loadXMLDoc" has been shortened, because it was catching just too much errors. Sounds strange, but the block was solely added to catch possible errors in Firefox when you read out XMLHttpRequest.status on a aborted request and just for this error!
  
  
  
  Tests:
.......
  r7080 | hqm | 2007-11-01 10:58:01 -0700 (Thu, 01 Nov 2007) | 34 lines
  
  Change 20071101-hqm-8 by hqm at IBM-2E06404CB67 on 2007-11-01 12:08:42 EDT
      in /cygdrive/c/users/hqm/openlaszlo/trunk2
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary:  fix spurious compiler warning on instance method declaration
  
  New Features:
  
  Bugs Fixed: LPP-5003
  
  Technical Reviewer: jcrowley
  QA Reviewer: pkang
  Doc Reviewer:
  
  Documentation:
  
  Release Notes:
  
  Details:
      
  
  Compiling a method on an Instance requires a different check than when compiling 
  a class.
  
  Tests:
  
  from bug test case source 
  smokecheck
  amazon
  webtop/lzmail client 
.......
  r7085 | pbr | 2007-11-01 13:22:09 -0700 (Thu, 01 Nov 2007) | 71 lines
  
  Change 20071026-Philip-8 by Philip at Philip-DC on 2007-10-26 15:32:12 EDT
       in /cygdrive/f/laszlo/svn/src/svn/openlaszlo/trunk
       for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Convert swf kernel to lfc class system (swf9 kernel)
  
  New Features:
  
  Bugs Fixed: LPP-NaN
  
  Technical Reviewer: ptw
  QA Reviewer: max
  Doc Reviewer: (pending)
  
  Documentation:
  
  Release Notes:
  
  Details:
  Convert the *.as files to *.lzs files by converting each file to the lfc class system. No functionality changes have been made. No indentation changes have been
    made to minimize the changes.
  
  Note, any changes to the kernel/swf files (beyond r6975) will have to be merged to the /swf9 directory.
  
  Some files contained singleton objects. These were converted to classes with a single instance. For example, LzScreenKernel becomes LzScreenKernelClass which is
    instantiated at the end of the file,
      var LzScreenKernel = new LzScreenKernelClass;
  
  There are some commented labeled //TODO or //PBR TODO which highlight some items I need to verify or modify. They don't seem to prevent the
  swf9 kernel from running.
  
  The two most interesting files to review are LzScreenKernel.lzs and LzMouseKernel.lzs. Another interesting change is with LzTextSprite.set{Width,Height}.
  
  I did not convert the dojo directories. I don't know if there is a
  flash9 version of these files. The file kernel/swf9/Library.lzs references the /swf/dojo files for now.
  
  
  Tests:
  
  Modify /kernel/Library.lzs to call
       #include "kernel/swf9/Library.lzs"
  instead of
       #include "kernel/swf/Library.lzs"
  
  Rebuild and applications continue to work. I tested with lzpix, calendar, component sampler, and tree.
  
  
  
  Files:
  M      WEB-INF/lps/lfc/kernel/swf9/LzMakeLoadSprite.lzs
  M      WEB-INF/lps/lfc/kernel/swf9/LzMediaLoader.lzs
  M      WEB-INF/lps/lfc/kernel/swf9/LzHTTPLoader.lzs
  M      WEB-INF/lps/lfc/kernel/swf9/LzSprite.lzs
  M      WEB-INF/lps/lfc/kernel/swf9/LzSoundMC.lzs
  M      WEB-INF/lps/lfc/kernel/swf9/LzFunctions.lzs
  M      WEB-INF/lps/lfc/kernel/swf9/LzXMLTranslator.lzs
  M      WEB-INF/lps/lfc/kernel/swf9/LzTextSprite.lzs
  M      WEB-INF/lps/lfc/kernel/swf9/LzXMLParser.lzs
  M      WEB-INF/lps/lfc/kernel/swf9/LzScreenKernel.lzs
  M      WEB-INF/lps/lfc/kernel/swf9/LzLoadQueue.lzs
  M      WEB-INF/lps/lfc/kernel/swf9/LzMouseKernel.lzs
  M      WEB-INF/lps/lfc/kernel/swf9/LzInputTextSprite.lzs
  M      WEB-INF/lps/lfc/kernel/swf9/Library.lzs
  M      WEB-INF/lps/lfc/kernel/swf9/LzRequires.lzs
  M      WEB-INF/lps/lfc/kernel/swf9/LzAudio.lzs
  M      WEB-INF/lps/lfc/kernel/swf9/LzFontManager.lzs
  M      WEB-INF/lps/lfc/kernel/swf9/LzKeyboardKernel.lzs
  
  Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20071026-Philip-8.tar
.......
  r7091 | pbr | 2007-11-02 07:23:28 -0700 (Fri, 02 Nov 2007) | 29 lines
  
  Change 20071031-Philip-8 by Philip at Philip-DC on 2007-10-31 16:26:16 EDT
      in /cygdrive/f/laszlo/svn/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
   
  Summary: Remove unnecessary references from LzInputTextSprite.as
   
  New Features:
   
  Bugs Fixed: LPP-4951
   
  Technical Reviewer: max
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
   
  Documentation:
   
  Release Notes:
   
  Details:
  LzInputTextSprite.as contains some copied code that references a hash from LzNode (defaultattrs). I removed it.
   
  Tests:
  /test/smoke/smokecheck.lzx
   
  Files:
  M      WEB-INF/lps/lfc/kernel/swf/LzInputTextSprite.as
   
  Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20071031-Philip-8.tar
.......
  r7093 | pbr | 2007-11-02 07:25:24 -0700 (Fri, 02 Nov 2007) | 43 lines
  
  Change 20071031-Philip-4 by Philip at Philip-DC on 2007-10-31 14:32:52 EDT
      in /cygdrive/f/laszlo/svn/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
   
  Summary: Fix reference to DEFAULT_SIZE in LzTextSprite.as
   
  New Features: 
   
  Bugs Fixed: LPP-4952
   
  Technical Reviewer: max
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
   
  Documentation:
   
  Release Notes:
   
  Details:
  The reference for DEFAULT_SIZE should be this.DEFAULT_SIZE and not LzText.DEFAULT_SIZE.
   
  Tests:
  See test below. The message is NaN for an unpatched system. A valid number is displayed once patched.
   
  <canvas>
    <font name="Helvetica" src="helmetr.ttf" />
    <simplelayout axis="y" spacing="10"/>
    <text name="message"/>
   
    <text font="Helvetica" multiline="true">
      Text using Helvetica
      <handler name="oninit">
        message.format("textheight = %g", this.sprite.lineheight);
      </handler>
    </text>
  </canvas>
   
   
  Files:
  M      WEB-INF/lps/lfc/kernel/swf/LzTextSprite.as
   
  Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20071031-Philip-4.tar
.......
  r7095 | hqm | 2007-11-02 09:52:05 -0700 (Fri, 02 Nov 2007) | 33 lines
  
  Change 20071102-hqm-0 by hqm at IBM-2E06404CB67 on 2007-11-02 11:53:42 EDT
      in /cygdrive/c/users/hqm/openlaszlo/trunk/WEB-INF/lps/lfc
      for http://svn.openlaszlo.org/openlaszlo/trunk/WEB-INF/lps/lfc
  
  Summary: don't throw error when selectChild() called on text node
  
  New Features:
  
  Bugs Fixed: LPP-4493
  
  Technical Reviewer: pbr
  QA Reviewer: andre
  Doc Reviewer:
  
  Documentation:
  
  Release Notes:
  
  Details:
  
  Check that functions exists before calling selector function on a node
  
  
  
  
  Tests:
  
   see test case in bug report.
  Run in DHTML, click button, see that no Firebug error occurs    
.......
  r7096 | hqm | 2007-11-02 11:16:25 -0700 (Fri, 02 Nov 2007) | 29 lines
  
  Change 20071102-hqm-6 by hqm at gigicorp on 2007-11-02 14:05:48 EDT
      in /cygdrive/c/users/hqm/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: warn if solo dhtml deploying an app with canvas debug enabled
  
  New Features:
  
  Bugs Fixed: LPP-3978
  
  Technical Reviewer: pbr
  QA Reviewer: josh
  Doc Reviewer: 
  
  Documentation:
  
  Release Notes:
  
  Details:
      
  
  Issue warning if SOLO DHTML app is run through the deployer wizard,
  and canvas debug  is true. Show message explaingin that the
  debugger does not work in SOLO DHTML yet
  
  
  Tests:
.......
  r7104 | hqm | 2007-11-02 13:09:58 -0700 (Fri, 02 Nov 2007) | 28 lines
  
  Change 20071102-hqm-a by hqm at gigicorp on 2007-11-02 16:08:28 EDT
      in /cygdrive/c/users/hqm/openlaszlo/trunk2/WEB-INF/lps/lfc
      for http://svn.openlaszlo.org/openlaszlo/trunk/WEB-INF/lps/lfc
  
  Summary:  LzDataText node gets nodeName of '#text'
  
  New Features:
  
  Bugs Fixed: LPP-4724
  
  Technical Reviewer: pbr
  QA Reviewer: andre
  Doc Reviewer: jsundman
  
  Documentation:
  
  Data text nodes (LzDataText) now return a value of '#text' for their node name, to comply
  with DOM standards. 
  
  
  Release Notes:
  
  Details:
      
  
  Tests:
.......
  r7105 | pbr | 2007-11-02 14:42:20 -0700 (Fri, 02 Nov 2007) | 30 lines
  
  Change 20071102-Philip-8 by Philip at Philip-DC on 2007-11-02 15:33:58 EDT
      in /cygdrive/f/laszlo/svn/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
   
  Summary: Fix window movement when clicked in IE7/dhtml
   
  New Features:
   
  Bugs Fixed: LPP-4918, LPP-4176
   
  Technical Reviewer: max
  QA Reviewer: jcrowley
  Doc Reviewer: (pending)
   
  Documentation:
   
  Release Notes:
   
  Details:
  The fix for LPP-4176 stopped working and mouse clicks over a window causes it to move in IE7/dhtml. The embedding scheme changed recently and this fix is not needed. It now corrects by two pixels and the window now moves in the other direction. The fix is to remove the change made for LPP-4176
   
   
  Tests:
  See tests in LPP-4918 and LPP-4176. When the window is clicked in IE7/dhtml, it no longer moves.
   
  Files:
  M      WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js
   
  Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20071102-Philip-8.tar
.......
  r7106 | jsundman | 2007-11-02 16:50:37 -0700 (Fri, 02 Nov 2007) | 1 line
  
  checkpointing master outline for new data chapters
.......
  r7107 | max | 2007-11-02 17:10:39 -0700 (Fri, 02 Nov 2007) | 24 lines
  
  Change 20071102-maxcarlson-n by maxcarlson at Plastik on 2007-11-02 12:16:32 PDT
      in /Users/maxcarlson/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Add support for setRotation() for webkit nightlies 
  
  New Features:
  
  Bugs Fixed: LPP-5030 - Add setRotation() support for webkit nightlies
  
  Technical Reviewer: ptw
  QA Reviewer: jcrowley
  Doc Reviewer: (pending)
  
  Documentation:
  
  Release Notes:
  
  Details: Set capabilities.rotation to true in Safari.  Add setRotation() method that sets the appropriate style per http://webkit.org/blog/130/css-transforms/
      
  
  Tests: http://localhost:8080/trunk/test/lztest/lztest-view.lzx?lzr=dhtml shows rotation in a recent build of webkit (WebKit-SVN-r27375)!
.......
  r7110 | hqm | 2007-11-02 18:53:26 -0700 (Fri, 02 Nov 2007) | 36 lines
  
  Change 20071102-hqm-2 by hqm at IBM-2E06404CB67 on 2007-11-02 21:49:05 EDT
      in /cygdrive/c/users/hqm/openlaszlo/trunk3
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: remove jing validator jar files
  
  New Features:
  
  Bugs Fixed: LPP-4832
  
  Technical Reviewer: ben
  QA Reviewer: jcrowley
  Doc Reviewer:
  
  Documentation:
  
  Release Notes:
  
  Details:
  
  removed the jing.jar library, and iso-relax (the abstract interface to
  schema validators)
  
  also took the opportunity to remove ftp.jar, the only caller was in
  jgenerator, and we don't
  support ftp files.
  
  
  Tests:
  
  ant build
  smokecheck
  ant doc
.......
  r7127 | bargull | 2007-11-05 04:09:51 -0800 (Mon, 05 Nov 2007) | 27 lines
  
  Change 20071102-bargull-0 by bargull at dell--p4--2-53 on 2007-11-02 00:57:53
      in /home/Admin/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Add null-check in basegridrow#setRegularColor(..)
  
  New Features:
  
  Bugs Fixed:
  LPP-5025 - Warning in "basegridrow#setRegularColor(..)"
  
  Technical Reviewer: jcrowley
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
  
  Documentation:
  
  Release Notes:
  
  Details:
  Added a null-check to avoid a debugger-warning when instantiating a grid by script.
  
  
  Tests:
  Attached at bugreport.
.......
  r7128 | hqm | 2007-11-05 05:20:01 -0800 (Mon, 05 Nov 2007) | 34 lines
  
  Change 20071104-hqm-0 by hqm at IBM-2E06404CB67 on 2007-11-04 21:44:46 EST
      in /cygdrive/c/users/hqm/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: workaround to get rid of warning when 'apply' is overridden
  
  New Features:
  
  Bugs Fixed: LPP-5042
  
  Technical Reviewer: ptw
  QA Reviewer: jcrowley
  Doc Reviewer:
  
  Documentation:
  
  Release Notes:
  
  Details:
  
  See bug report LPP-5042
  
  
      
  
  Tests:
  compile
  
  example/components/style_example.lzx, and should not  see this compiler warning anymore:
  lz/windowpanel.lzx:259:88: In element 'state' attribute 'apply' is overriding parent class attribute which has the same name but type: method
.......
  r7129 | jcrowley | 2007-11-05 06:07:43 -0800 (Mon, 05 Nov 2007) | 44 lines
  
  Change 20071011-jcrowley-5 by jcrowley at doctormanhattan.mshome.net on 2007-10-11 18:39:57 EDT
      in /Users/jcrowley/src/svn/openlaszlo/trunk-g
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Two Amazon demo bug fixes
  
  New Features:
  
  Bugs Fixed: LPP-4858 - BluePrint Music, SWF7 FF2 OSX 10.4.10: Dragging
  	large album icon onto Shopping Cart Vertical Tab is not recognized.
  	LPP-4694 - Amazon: Dragging the cart, wishlist, checkout fields
  	open gives a different result than clicking the tabslider open
  
  Technical Reviewer: ben
  QA Reviewer: max
  Doc Reviewer: 
  
  Documentation:
  
  Release Notes:
  
  Details: The dragger wasn't setting the internal tab content to visible,
  	so it wasn't showing up when it was dragged open.  There was
  	also some weird -20 offset going on.
  
  	UPDATE: I figured it out:  It was sending in the wrong view as
  	an argument to the method to check whether the thumbnail was
  	dropped over the tabelement in question.  Thus, it was checking
  	for the relative attribute of the container to the canvas, which,
  	due to the width of the tabslider tab, was 20 pixels off.  This
  	should work now without fixing it in the wrong place.
  
  Tests: Run Amazon demo:
  	1) Drag open the cart, wish list, checkout: Note the contents are
  	actually visible.  Compare with an unmodified version of the demo,
  	where the contents are not visible.  (You can also drag open the
  	tab, and click it shut.  There was another issue I fixed, not sure
  	if there was ever a bug filed, where if you dragged open the tab,
  	you'd have to click it twice to get it to shut.)
  
  	2) Drag an item into the cart, and another into the wish list:
  	Note that they are now deposited into the appropriate places.
.......
  r7130 | jcrowley | 2007-11-05 06:22:06 -0800 (Mon, 05 Nov 2007) | 28 lines
  
  Change 20071105-jcrowley-M by jcrowley at DoctorManhattan.mshome.net on 2007-11-05 06:28:08 EST
      in /Users/jcrowley/src/svn/openlaszlo/trunk-a
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: ant runlzunit fails
  
  New Features:
  
  Bugs Fixed: LPP-4968 - ant runlzunit fails
  
  Technical Reviewer: pbr
  QA Reviewer: max
  Doc Reviewer: (pending)
  
  Documentation:
  
  Release Notes:
  
  Details: This was failing because the test for
  	basedatacombobox was failing in DHTML
  	because basedatacombobox wasn't checking
  	to make sure defaulttext existed before
  	trying to access it.
  
  Tests: ant runlzunit - note that all the tests
  	pass, and the build is successful.
.......
  r7131 | ptw | 2007-11-05 11:52:33 -0800 (Mon, 05 Nov 2007) | 48 lines
  
  Change 20071102-ptw-t by ptw at dueling-banjos.local on 2007-11-02 22:24:07 EDT
      in /Users/ptw/OpenLaszlo/ringding-2
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Uses 'plists' rather than Object's to pass instance attributes
      to Class.make
  
  Bugs Fixed:
  LPP-4997 'DHTML: text.format() doesn't work unless debugging enabled.'
  
  Technical Reviewer: a.bargull at intensis.de (pending)
  QA Reviewer: philip at pbrdev.com (Message-Id: <20071105143724.63B20126AF3 at hemicuda.laszlosystems.com>)
  
  Details:
      Using Object's as hashes is fraught with danger because our
      favorite browser has quirks in how it enumerates the properties of
      an object; hence replace all uses of Object/hash in the Class
      framework with a 'plist' (i.e., a property list, i.e., an array of
      alternating key/value entries).
  
      lztest-class-impl, UserClass: Use new protocol.
  
      LzLoader, LzMediaLoader, LzContextMenuItem, LzLibrary,
      LzContextMenu, LzKeys, LzHistory, LzGlobalMouse, LzFocus, LzNode,
      LzInputText, LzText, LaszloView, LaszloCanvas, LzCommand, LzState,
      LzAnimatorGroup, LzReplicationManager, LzDatapointer, LzDataText,
      LzDataNode, LzDataRequest, LzDataElement, LzDataset, LzDatapath, 
      Replace all calls to DeclareEvent with instance var declaration
      with LzDeclaredEvent initial value.  (We want this anyways so we
      don't have to munge class prototypes at runtime, but it is needed
      in this change because Mixin's no longer store their instance
      properties on a psuedo-prototype object.)
  
      LzDefs: remove DeclareEvent(s).
  
      LzFormatter: Make the bootstrap LzMessage class more like the real
      class.  Fix some type-ohs.
  
      Class, CommonGenerator: replace hashes with plists.
  
      Class: remove obsolete 'make' and passThrough's.
  
  Tests:
      Test case from bug passes (in IE6)
  
      smokecheck, lztest
.......
  r7132 | hqm | 2007-11-05 12:00:28 -0800 (Mon, 05 Nov 2007) | 37 lines
  
  Change 20071105-hqm-0 by hqm at IBM-2E06404CB67 on 2007-11-05 14:54:40 EST
      in /cygdrive/c/users/hqm/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: put XML parser back into server data proxy pipeline, to do
  charset transcoding
  
  New Features:
  
  Bugs Fixed: LPP-4924
  
  Technical Reviewer: max
  QA Reviewer: pablo
  Doc Reviewer:
  
  Details:
  
  The server data proxy now uses the XMLPULL parser to parse
  the data from the backend, in order to use Java to force a translation
  into UTF-8
  coding if needed.
  
  This change also uses a worker Thread to read from the backend, while
  simultaneously
  pipelining the data back throug the XML PULL parser to the client.
  This should improve
  response time and also removes a potential memory overflow and DOS
  attack on the server.
  
  Tests:
  
  test/lfc/data/alldata.lzx
  amazon
  calendar
.......
  r7133 | max | 2007-11-05 12:03:56 -0800 (Mon, 05 Nov 2007) | 55 lines
  
  Change 20071102-maxcarlson-v by maxcarlson at Plastik on 2007-11-02 17:35:12 PDT
      in /Users/maxcarlson/openlaszlo/trunk-clean
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Merge wafflecone r7097 to trunk
  
  New Features:
  
  Bugs Fixed: LPP-4999 - IE resets history to #0 after visiting another site and pressing the back button, LPP-5016 - _parse gets called before canvas is initialized
  
  Technical Reviewer: promanik
  QA Reviewer: jcrowley
  Doc Reviewer: (pending)
  
  Documentation:
  
  Release Notes:
  
  Details: 
  
  Plastik:trunk-clean maxcarlson$ ~/openlaszlo/tools/svn/svnmerge.py merge -r 709
  7 -S ../wafflecone
  U    WEB-INF/lps/lfc/kernel/swf/LzSprite.as
  U    WEB-INF/lps/lfc/LaszloLibrary.lzs
  U    lps/includes/source/embednew.js
  U    lps/includes/source/lzhistory.js
  
  property 'svnmerge-integrated' set on '.'
      
  
  Tests: Test a SOLO compile of this application:
  <canvas width="100%" height="100%" debug="true" proxied="false">
    <attribute name="stateValue" type="string" value="null"/>
    
    <simplelayout axis="x"/> 
    <button text="Next">
      <handler name="onclick">
        var cur = Number(canvas.stateValue);
        if(isNaN(cur)) { cur = 0; }
        cur++;
        LzBrowser.loadJS("Lz.setCanvasAttribute('stateValue', '" + escape(cur) + "', true)");
      </handler>
    </button>
    <button text="Google">
      <handler name="onclick">
        LzBrowser.loadURL('http://google.com/');
      </handler>
    </button>
  
    <text text="${canvas.stateValue}" resize="true" x="100" y="100"/>
  </canvas>
  
  Run the SOLO compile, step forward a few times, then click the 'google' button.  Pressing the back button after google loads should work in ie7, firefox and google.  
.......



Property changes on: openlaszlo/branches/paperpie
___________________________________________________________________
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-7010
   + /openlaszlo/branches/wafflecone:1-5746,5818-6068,6070-6205,6207-6213,6216-6265,6267-6368,6370-6431,6433-6450,6497 /openlaszlo/trunk:1-7041,7043-7136

Deleted: openlaszlo/branches/paperpie/WEB-INF/lib/ftp.jar

Deleted: openlaszlo/branches/paperpie/WEB-INF/lib/iso-relax.jar

Deleted: openlaszlo/branches/paperpie/WEB-INF/lib/jing.jar

Deleted: openlaszlo/branches/paperpie/WEB-INF/lib/xpp3-1.1.3.4d_b4.jar

Copied: openlaszlo/branches/paperpie/WEB-INF/lib/xpp3-1.1.4c.jar (from rev 7133, openlaszlo/trunk/WEB-INF/lib/xpp3-1.1.4c.jar)

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/LaszloLibrary.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/LaszloLibrary.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/LaszloLibrary.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -47,15 +47,6 @@
 if ($as2) {
     // Initialize the DojoExternalInterface class
     DojoExternalInterface = new DojoExternalInterfaceClass();
-
-    // Expose your methods
-    DojoExternalInterface.addCallback("getCanvasAttribute", LzHistory, LzHistory.getCanvasAttribute);
-    DojoExternalInterface.addCallback("setCanvasAttribute", LzHistory, LzHistory.setCanvasAttribute);
-    DojoExternalInterface.addCallback("callMethod", LzHistory, LzHistory.callMethod);
-    DojoExternalInterface.addCallback("receiveHistory", LzHistory, LzHistory.receiveHistory);
-
-    // Tell JavaScript that you are ready to have method calls
-    DojoExternalInterface.loaded();
 }
 
 if ($debug) {

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/compiler/Class.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/compiler/Class.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/compiler/Class.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -273,8 +273,8 @@
   // are classname:String (required); traitsAndSuperclass:(Null ||
   // Class || Array) if Null defaults to Instance, if Array, the
   // elements of the array are the traits followed by the superclass;
-  // instanceProperties:Object is a hash of initial instance properties;
-  // staticProperties:Object is a hash of the inital class properties;
+  // instanceProperties:Array is a 'plist' of initial instance properties;
+  // staticProperties:Array is a 'plist' of the inital class properties;
   make: function make (classname, traitsAndSuperclass, instanceProperties, staticProperties) {
     // The constructor notes itself in every instance
     var nc = function constructor () {
@@ -323,8 +323,6 @@
       }
     }
     if (! superclass) { superclass = Instance; }
-    // Default factory
-    nc.addStaticProperty('make', superclass.make);
     // The prototype is an instance of our super, which causes us to
     // inherit our super's instanceProperties
     {
@@ -332,7 +330,6 @@
       // class instance initializer
       var xtor = function prototype () { this.constructor = superclass; };
       xtor.prototype = superclass.prototype;
-      #pragma "passThrough=true"
       var prototype = new xtor(); // --- superclass.make();
     }
     // Create any trait interstitials, following the pattern above
@@ -343,8 +340,12 @@
       }
     }
     // Install the staticProperties
-    for (var name in staticProperties) {
-      nc.addStaticProperty(name, staticProperties[name]);
+    if (staticProperties) {
+      while (staticProperties.length > 0) {
+        var value = staticProperties.pop();
+        var name = staticProperties.pop();
+        nc.addStaticProperty(name, value);
+      }
     }
     // Create super link
     nc.prototype = prototype;
@@ -355,8 +356,12 @@
       prototype._dbg_typename = classname
     }
     // Class.initialize:  Install initial values
-    for (var p in instanceProperties) {
-      nc.addProperty(p, instanceProperties[p]);
+    if (instanceProperties) {
+      while (instanceProperties.length > 0) {
+        var value = instanceProperties.pop();
+        var name = instanceProperties.pop();
+        nc.addProperty(name, value);
+      }
     }
     // Run class initializers from least to most specific
     (function classInit (prototype, constructor) {
@@ -389,8 +394,11 @@
   _dbg_name: 'Trait',
   // Adds a property to the Trait, and to all implementations
   addProperty: function addProperty (name, value) {
+    // Add to prototype
+    this.prototype[name] = value;
     // Save for future implementations
-    this.prototype[name] = value;
+    this.instanceProperties.push(name);
+    this.instanceProperties.push(value);
     // Add it to existing implementations
     var impls = this.implementations;
     for (var mash in impls) {
@@ -430,15 +438,18 @@
       }
     }
     // Add the properties to the prototype (superclassInstance)
-    var prototype = this.prototype;
-    for (var name in prototype) {
+    var ip = this.instanceProperties;
+    var ipl = ip.length;
+    for (var i = 0; i < ipl; i += 2) {
 //       if ($debug) {
 //         if (name in superclassInstance) {
 //           Debug.debug("%s.%s overrides %s.%s", this.classname, name,
 //                       superclassInstance.constructor.classname, name);
 //         }
 //       }
-      superclassInstance.addProperty.call(superclassInstance, name, prototype[name]);
+      var name = ip[i];
+      var value = ip[i+1];
+      superclassInstance.addProperty.call(superclassInstance, name, value);
     }
     // Make the interstitial
     var xtor = function interstitial () { this.constructor = arguments.callee; };
@@ -471,6 +482,7 @@
       _dbg_typename: this._dbg_name,
       _dbg_name: classname,
       prototype: superTrait ? superTrait.make() : new Object,
+      instanceProperties: superTrait ? superTrait.instanceProperties.slice(0) : new Array,
       // Remembers all implementations of the Trait
       implementations: {}
     };
@@ -478,12 +490,20 @@
     nt.addStaticProperty('addProperty', this.addProperty);
     nt.addStaticProperty('makeInterstitial', this.makeInterstitial);
     // Install the staticProperties
-    for (var p in staticProperties) {
-      nt.addStaticProperty(p, staticProperties[p]);
+    if (staticProperties) {
+      while (staticProperties.length > 0) {
+        var value = staticProperties.pop();
+        var name = staticProperties.pop();
+        nt.addStaticProperty(name, value);
+      }
     }
     // Trait.initialize:  install initial values
-    for (var p in instanceProperties) {
-      nt.addProperty(p, instanceProperties[p]);
+    if (instanceProperties) {
+      while (instanceProperties.length > 0) {
+        var value = instanceProperties.pop();
+        var name = instanceProperties.pop();
+        nt.addProperty(name, value);
+      }
     }
     // Run the initializer if there is one
     if (nt.hasOwnProperty('initialize')) {

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/compiler/LzFormatter.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/compiler/LzFormatter.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/compiler/LzFormatter.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -19,13 +19,17 @@
  */
 class LzMessage {
   var message = '';
+  var length = 0;
 
-  static function initialize (message) {
-    this.message = message;
+  function initialize (message) {
+    if (arguments.length > 0) {
+      this.appendInternal('' + message, message);
+    }
   }
 
   function appendInternal (str, obj) {
     this.message += str;
+    this.length = this.message.length;
   }
 
   function append (str) {

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/controllers/LzAnimatorGroup.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/controllers/LzAnimatorGroup.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/controllers/LzAnimatorGroup.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -184,28 +184,28 @@
    */
   var isactive = false;
 
-DeclareEvent(prototype, 'ontarget' );
-DeclareEvent(prototype, 'onduration' );
-DeclareEvent(prototype, 'onstarted' );
+var ontarget = LzDeclaredEvent;
+var onduration = LzDeclaredEvent;
+var onstarted = LzDeclaredEvent;
 
 /** Executed when the animator starts.  This code is executed
   * multiple times if the animator repeats.
   */
-DeclareEvent(prototype, 'onstart' );
-DeclareEvent(prototype, 'onpaused' );
+var onstart = LzDeclaredEvent;
+var onpaused = LzDeclaredEvent;
 
 /** Use of 'onfinish' event
   * is deprecated. Use 'onstop' event instead.
   * @keywords deprecated
   */
-DeclareEvent(prototype, 'onfinish' );
+var onfinish = LzDeclaredEvent;
 
 /** Executed when the animator finishes.
   */
-DeclareEvent(prototype, 'onstop' );
+var onstop = LzDeclaredEvent;
 
 /** Event sent at the beginning of each new repeat. */
-DeclareEvent(prototype, 'onrepeat' );
+var onrepeat = LzDeclaredEvent;
 
 var animatorProps = { attribute : true, from : true ,
                       duration : true , to : true ,

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/core/LzDefs.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/core/LzDefs.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/core/LzDefs.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -47,25 +47,6 @@
 LzDeclaredEvent.ready = false;
 
 /**
-  * @access private
-  */
-function DeclareEvent( who , what ){
-    //    Debug.debug('declare ' + who + ' what ' + what);
-    who[ what ] = LzDeclaredEvent;
-}
-
-/**
-  * @access private
-  */
-function DeclareEvents( who , what ){
-    //    Debug.debug('DeclareEvents', who, what);
-    for (var i in what) {
-        //Debug.info('what', what[i]);
-        who[what[i]] = LzDeclaredEvent;
-    }
-}
-
-/**
   * Used to efficiently clone hashtables using Object's
   * N.B. these tables incorrectly will appear to have entries for all
   * the properties of Object.prototype.  To avoid this (but pay the

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/core/LzNode.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/core/LzNode.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/core/LzNode.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -262,22 +262,22 @@
 /** This event is sent right before a node becomes active --
   * e.g. before a view displays, or before a layout affects its subviews.
   */
-DeclareEvent(prototype, 'oninit' );
+var oninit = LzDeclaredEvent;
 
 /** This is the first event a node sends, right
   * at the end of the instantiation process, but before any subnodes
   * have been created or references resolved
   */
-DeclareEvent(prototype, 'onconstruct' );
+var onconstruct = LzDeclaredEvent;
 
 /** The ondata script is executed when the data selected by a view's datapath
   * changes.
   */
-DeclareEvent(prototype, 'ondata' );
+var ondata = LzDeclaredEvent;
 /** If replicated, the index of this clone */
 var clonenumber = null;
-DeclareEvent(prototype, 'onclonenumber' );
-DeclareEvent(prototype, 'ondestroy' );
+var onclonenumber = LzDeclaredEvent;
+var ondestroy = LzDeclaredEvent;
 
 /** @access private */
 var __LZlateinit = null;

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/core/UserClass.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/core/UserClass.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/core/UserClass.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -117,7 +117,7 @@
       traitList ? traitList : sup,
       null,
       // LzNode.initialize installs the tagname in ConstructorMap
-      {tagname: classname}
+      ['tagname', classname]
       );
 
     // For backward compatibility, we also install the class as a

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDataElement.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDataElement.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDataElement.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -32,12 +32,12 @@
       }
     }
 
-DeclareEvent(prototype, 'onDocumentChange' );
-DeclareEvent(prototype, 'onparentNode' );
-DeclareEvent(prototype, 'onchildNode' );
-DeclareEvent(prototype, 'onchildNodes' );
-DeclareEvent(prototype, 'onattributes' );
-DeclareEvent(prototype, 'onnodeName' );
+var onDocumentChange = LzDeclaredEvent;
+var onparentNode = LzDeclaredEvent;
+var onchildNode = LzDeclaredEvent;
+var onchildNodes = LzDeclaredEvent;
+var onattributes = LzDeclaredEvent;
+var onnodeName = LzDeclaredEvent;
 
 /** @access private */
 var __LZo = -1;

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDataNode.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDataNode.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDataNode.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -66,7 +66,7 @@
   */
 trait LzDataNode {
 
-DeclareEvent(prototype, 'onownerDocument' );
+var onownerDocument = LzDeclaredEvent;
 
 
 /** The type of this node -- ELEMENT_NODE or TEXT_NODE

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDataRequest.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDataRequest.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDataRequest.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -43,7 +43,7 @@
     // Used by dataprovider to record error messages
     var error = null; 
 
-    DeclareEvent(prototype, 'onstatus' );
+    var onstatus = LzDeclaredEvent;
 
     function initialize (requestor) { 
         super.initialize.apply(this, arguments);

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDataText.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDataText.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDataText.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -27,17 +27,25 @@
 }
 
 
-DeclareEvent(LzDataText.prototype, 'onDocumentChange' );
-DeclareEvent(LzDataText.prototype, 'onparentNode' );
-DeclareEvent(LzDataText.prototype, 'onchildNode' );
-DeclareEvent(LzDataText.prototype, 'onchildNodes' );
-DeclareEvent(LzDataText.prototype, 'onattributes' );
-DeclareEvent(LzDataText.prototype, 'onnodeName' );
+var onDocumentChange = LzDeclaredEvent;
+var onparentNode = LzDeclaredEvent;
+var onchildNode = LzDeclaredEvent;
+var onchildNodes = LzDeclaredEvent;
+var onattributes = LzDeclaredEvent;
+var onnodeName = LzDeclaredEvent;
 
 /** This property is of type String, can raise a DOMException object on setting
   * and can raise a DOMException object on retrieval. */
 var nodeType = LzDataNode.TEXT_NODE;
 
+/** The name of this node.
+ * According to W3C-specs, nodeName for LzDataText should return
+ * "#text", see
+ * "http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#ID-1841493061"
+  * @type String
+  */
+var nodeName        = '#text';
+
 setters.data = "setData";
 
 /** The data held by this node.

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDatapath.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDatapath.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDatapath.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -93,14 +93,14 @@
 
 /** Sent when the datapath's data changes.
   */
-/* DeclareEvent(prototype, 'ondata'); */
+/* var ondata = LzDeclaredEvent; */
 /** Sent when the datapath's data results in an error.
   */
-/* DeclareEvent(prototype, 'onerror'); */
+/* var onerror = LzDeclaredEvent; */
 /** Sent when the datapath's data encounters a
   * timeout.
   */
-/* DeclareEvent(prototype, 'ontimeout'); */
+/* var ontimeout = LzDeclaredEvent; */
 
 /** This attribute applies to datapaths
   * which match multiple nodes and force replication. See the

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDatapointer.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDatapointer.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDatapointer.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -125,8 +125,8 @@
 var rerunxpath = false;
 setters.rerunxpath = "__LZsetRerunXPath";
 
-DeclareEvent(prototype, 'onp' );
-DeclareEvent(prototype, 'onDocumentChange' );
+var onp = LzDeclaredEvent;
+var onDocumentChange = LzDeclaredEvent;
 /** Sent when the data selected by this datapointer's <attribute>xpath</attribute>
   * changes. For XPaths which select a datanode, this means that the
   * datapointer is pointing to a new node. For XPaths which select text data,
@@ -135,16 +135,16 @@
   * a data node will not receive <event>ondata</event> when the node, say, changes one of
   * its attributes.
   */
-DeclareEvent(prototype, 'ondata' );
+var ondata = LzDeclaredEvent;
 /** Sent when the dataset that the datapointer 
   * is pointing to generates an error.
   */
-DeclareEvent(prototype, 'onerror' );
+var onerror = LzDeclaredEvent;
 /** Sent when a request by the dataset that 
   * the datapointer is pointing to times out.
   */
-DeclareEvent(prototype, 'ontimeout' );
-DeclareEvent(prototype, 'onrerunxpath' );
+var ontimeout = LzDeclaredEvent;
+var onrerunxpath = LzDeclaredEvent;
 
 
 //to set datapointer to datasource:dataset
@@ -802,7 +802,9 @@
   amnt = amnt ? amnt : 1;
   var np = this.p;
   for (; np != null && amnt > 0; amnt--) {
-    np = np[selector]();
+      if (typeof (np[selector]) == 'function') {
+          np = np[selector]();
+      }
   }
   if (np != null) {
     this.setPointer( np );

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDataset.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDataset.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzDataset.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -103,11 +103,11 @@
 var dataRequestClass = LzHTTPDataRequest;
 var dsloadDel = null;
 
-DeclareEvent(prototype, 'ondata' );
+var ondata = LzDeclaredEvent;
 /** Sent when the dataset's request results in an error. */
-DeclareEvent(prototype, 'onerror' );
+var onerror = LzDeclaredEvent;
 /** Sent when the request made by the dataset times out. */
-DeclareEvent(prototype, 'ontimeout' );
+var ontimeout = LzDeclaredEvent;
 
 var timeout = 60000;
 

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzReplicationManager.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzReplicationManager.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/data/LzReplicationManager.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -111,9 +111,9 @@
 
 /** @access private */
 var __LZdataoffset = 0;
-DeclareEvent(prototype, 'onnodes' );
-DeclareEvent(prototype, 'onclones' );
-DeclareEvent(prototype, 'onvisible' );
+var onnodes = LzDeclaredEvent;
+var onclones = LzDeclaredEvent;
+var onvisible = LzDeclaredEvent;
 
 /**
   * @access private

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/debugger/LzDebug.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/debugger/LzDebug.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/debugger/LzDebug.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -490,6 +490,9 @@
     // that have a non-inherited value.  This should find 'own' slots,
     // getters, and funny 'native' slots like swf movieclips, etc.
     if ((! proto) ||
+        // Be careful calling hasOwnProperty (it could be a method in
+        // a native prototype that will fail when called on the
+        // prototype itself)
         this.ignoringErrors(function () { return obj.hasOwnProperty(key);}, this, (! (key in proto))) ||
         // Be careful poking at prototypes (consider getters that may
         // fail when called on the prototype)

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/debugger/platform/dhtml/LzDebug.js
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/debugger/platform/dhtml/LzDebug.js	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/debugger/platform/dhtml/LzDebug.js	2007-11-05 23:35:46 UTC (rev 7140)
@@ -306,7 +306,11 @@
                        (thing.length >= 0)) ? [] : null;
 
         this.objectOwnProperties(thing, names, indices, limit);
-        if (indices) { indices.sort(); }
+        if (indices) { indices.sort(function (a, b) {
+            var al = Number(a);
+            var bl = Number(b);
+            return (al > bl) - (al < bl);
+          }); }
 
         // No pretty for subclasses or non-objects or array-like objects
         // that are not Arrays.
@@ -471,7 +475,11 @@
       var bl = b.toLowerCase();
       return (al > bl) - (al < bl);
     });
-    if (indices) { indices.sort(); }
+    if (indices) { indices.sort(function (a, b) {
+            var al = Number(a);
+            var bl = Number(b);
+            return (al > bl) - (al < bl);
+          }); }
     var description = "";
     var nnames = names.length;
     var val;

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/debugger/platform/swf/LzDebug.as
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/debugger/platform/swf/LzDebug.as	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/debugger/platform/swf/LzDebug.as	2007-11-05 23:35:46 UTC (rev 7140)
@@ -365,7 +365,11 @@
                      (thing.length >= 0)) ? [] : null;
 
       this.objectOwnProperties(thing, names, indices, limit);
-      if (indices) { indices.sort(); }
+      if (indices) { indices.sort(function (a, b) {
+            var al = Number(a);
+            var bl = Number(b);
+            return (al > bl) - (al < bl);
+          }); }
 
       // No pretty for subclasses or non-objects or array-like objects
       // that are not Arrays.
@@ -542,7 +546,11 @@
     var bl = b.toLowerCase();
     return (al > bl) - (al < bl);
   });
-  if (indices) { indices.sort(); }
+  if (indices) { indices.sort(function (a, b) {
+            var al = Number(a);
+            var bl = Number(b);
+            return (al > bl) - (al < bl);
+          }); }
   var description = "";
   var nnames = names.length;
   var val;

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/helpers/LzCommand.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/helpers/LzCommand.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/helpers/LzCommand.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -47,16 +47,16 @@
 /** array of keys (strings) that, when pressed together,
   * cause the onselect event of the command to be sent. For example:
   * setAttribute('key', ['a', 'shift']) or setKeys(['j', 'control'])
-  * @type [String]
+  * @type [String]?
   */
-var keys;
+var keys = null;
 setters.key = "setKeys";
 
 /**
   * If the command is active, this event is sent
   * when the keys array are pressed simultaneously.
   */
-DeclareEvent(prototype, 'onselect' );
+var onselect = LzDeclaredEvent;
 
 /**
   * This registers the given key array so that the command is executed when the
@@ -79,26 +79,34 @@
 }
 
 /**
+ * Mapping from key names to display strings used by keysToString
+ */
+static var DisplayKeys = {control:"Ctrl", shift:"Shift", alt:"Alt"};
+
+/**
   * This is a utility method that returns a string that describes the key 
   * combination that causes this command to be invoked.
   * 
   * @return String: A string containing the key combination that causes this
   * command to be invoked.
   */
-function keysToString ( ){
-    var DisplayKeys = {control:"Ctrl", shift:"Shift", alt:"Alt"}
-    var s= ""
-    var k = ""
-    var l= this.keys.length;
-    for( var i=0; i<l-1; i++ ){
-        k = this.keys[i];
-        if (k=="Control") k="Ctrl";
+function keysToString ( ) {
+  var s= "";
+  var keys = this.keys;
+  if (keys) {
+    var dk = LzCommand.DisplayKeys;
+    var k = "";
+    var l= keys.length - 1;
+    for (var i = 0; i < l; i++) {
+        k = keys[i];
+        if (k in dk) k = dk[k];
         s = s + k + "+"
     }
-    k = this.keys[i];
-    if (k=="Control") k="Ctrl";
+    k = keys[i];
+    if (k in dk) k = dk[k];
     s = s + k;
-    return s;
+  }
+  return s;
 }
 
 }; // End of LzCommand

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/helpers/LzState.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/helpers/LzState.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/helpers/LzState.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -80,9 +80,9 @@
 static var tagname = 'state';
 
 /** Sent when the state is applied. */
-DeclareEvent(prototype, 'onapply' );
+var onapply = LzDeclaredEvent;
 /** Sent when the state is removed */
-DeclareEvent(prototype, 'onremove' );
+var onremove = LzDeclaredEvent;
 
 /** <code>setAttribute('apply', true)</code> will
   * apply the state.  <code>setAttribute('apply', false)</code> will

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/dhtml/LzContextMenu.js
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/dhtml/LzContextMenu.js	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/dhtml/LzContextMenu.js	2007-11-05 23:35:46 UTC (rev 7140)
@@ -26,7 +26,7 @@
     this.setDelegate(del);
 }
 
-DeclareEvent(prototype, 'onmenuopen' );
+var onmenuopen = LzDeclaredEvent;
 
 var showbuiltins = false;
 
@@ -170,7 +170,7 @@
     this.setDelegate(del);
 }; // End of LzContextMenuItem
 
-DeclareEvent(prototype, 'onselect' );
+var onselect = LzDeclaredEvent;
 
 /**
   * LzContextMenuItem.setDelegate

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/dhtml/LzHTTPLoader.js
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/dhtml/LzHTTPLoader.js	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/dhtml/LzHTTPLoader.js	2007-11-05 23:35:46 UTC (rev 7140)
@@ -301,50 +301,54 @@
                 } else if (__pthis__.__abort) {
                     //Debug.write("abort for id=%s, xhr=%w", __pthis__.__loaderid, __pthis__.req);
                 } else {
+                    var status = -1;
                     try {
-                        // only if "OK"
-                        //Debug.write("status=%d", __pthis__.req.status);
-                        if (__pthis__.req.status == 200 || __pthis__.req.status == 304) {
-                            var elt = null;
-                            var xml = __pthis__.req.responseXML;
-                            __pthis__.responseXML = xml;
-                            var lzxdata = null;
-                            if (xml != null && parsexml) {
-                                var nodes = __pthis__.req.responseXML.childNodes;
-                                // find first content (type == 1) child node
-                                for (var i = 0; i < nodes.length; i++) {
-                                    var child = nodes.item(i);
-                                    if (child.nodeType == 1) {
-                                        elt = child;
-                                        break;
-                                    }
+                        status = __pthis__.req.status;
+                    } catch (e) {
+                        //if you abort a request, readyState will be set to 4, 
+                        //but reading status will result in an exception (at least in Firefox).
+                        //Debug.write("catched error: %s", e);
+                    }
+                    
+                    // only if "OK"
+                    //Debug.write("status=%d", status);
+                    if (status == 200 || status == 304) {
+                        var elt = null;
+                        var xml = __pthis__.req.responseXML;
+                        __pthis__.responseXML = xml;
+                        var lzxdata = null;
+                        if (xml != null && parsexml) {
+                            var nodes = __pthis__.req.responseXML.childNodes;
+                            // find first content (type == 1) child node
+                            for (var i = 0; i < nodes.length; i++) {
+                                var child = nodes.item(i);
+                                if (child.nodeType == 1) {
+                                    elt = child;
+                                    break;
                                 }
-                                lzxdata = LzXMLTranslator.copyXML(elt,
-                                                            __pthis__.options.trimwhitespace,
-                                                            __pthis__.options.nsprefix);
                             }
+                            lzxdata = LzXMLTranslator.copyXML(elt,
+                                                        __pthis__.options.trimwhitespace,
+                                                        __pthis__.options.nsprefix);
+                        }
                     
-                            __pthis__.responseText = __pthis__.req.responseText;
-                            __pthis__.removeTimeout(__pthis__);
+                        __pthis__.responseText = __pthis__.req.responseText;
+                        __pthis__.removeTimeout(__pthis__);
                     
                     
                     
-                            /**** DEBUGGING 
-                            var xmlSerializer = new XMLSerializer();
-                            var markup = xmlSerializer.serializeToString(elt);
-                            Debug.write("loadXMLDoc", elt, markup, d.serialize());
-                             *** /DEBUGGING
-                             */
-                            __pthis__.req = null;
-                            __pthis__.loadSuccess(__pthis__, lzxdata);
-                        } else {
-                            __pthis__.req = null;
-                            __pthis__.loadError(__pthis__, null);
-                        }
-                    } catch (e) {
-                        //if you abort a request, readyState will be set to 4, 
-                        //but reading status will result in an exception (at least in Firefox).
-                        //Debug.write("catched error: %s", e);
+                        /**** DEBUGGING 
+                        var xmlSerializer = new XMLSerializer();
+                        var markup = xmlSerializer.serializeToString(elt);
+                        Debug.write("loadXMLDoc", elt, markup, d.serialize());
+                         *** /DEBUGGING
+                         */
+                        __pthis__.req = null;
+                        __pthis__.loadSuccess(__pthis__, lzxdata);
+                    } else {
+                        __pthis__.removeTimeout(__pthis__);
+                        __pthis__.req = null;
+                        __pthis__.loadError(__pthis__, null);
                     }
                 }
             }

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/dhtml/LzLibrary.js
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/dhtml/LzLibrary.js	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/dhtml/LzLibrary.js	2007-11-05 23:35:46 UTC (rev 7140)
@@ -51,7 +51,7 @@
 
 var loaded = false;
 var loading = false;
-DeclareEvent(prototype, 'onload');
+var onload = LzDeclaredEvent;
 
 function toString (){
     return "Library " + this.href + " named " + this.name;

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js	2007-11-05 23:35:46 UTC (rev 7140)
@@ -224,7 +224,6 @@
     ,inputtext_parents_cannot_contain_clip: false
     ,minimize_opacity_changes: false
     ,set_height_for_multiline_inputtext: false
-    ,ie_offset_position_by_2: false
     ,ie_opacity: false
     ,text_measurement_use_insertadjacenthtml: false
 }
@@ -285,11 +284,6 @@
             // multiline inputtext height must be set directly - height: 100% does not work.  See LPP-4119
             this.quirks['set_height_for_multiline_inputtext'] = true;
 
-            if (Lz.__BrowserDetect.version > 6) {
-                // IE 7 offsets div positions by 2 px.  See LPP-4176. 
-                this.quirks['ie_offset_position_by_2'] = true;
-            }
-
             // text size measurement uses insertAdjacentHTML()
             this.quirks['text_measurement_use_insertadjacenthtml'] = true;
         } else if (Lz.__BrowserDetect.isSafari) {
@@ -309,6 +303,9 @@
             this.quirks['safari_visibility_instead_of_display'] = true;
             this.quirks['absolute_position_accounts_for_offset'] = true;
             this.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;
@@ -1266,10 +1263,6 @@
         box = el.getBoundingClientRect();
         var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
         var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;
-        if (this.quirks['ie_offset_position_by_2']) {
-            scrollLeft -= 2;
-            scrollTop -= 2;
-        }
         return {x: box.left + scrollLeft, y: box.top + scrollTop};
     } else if (document.getBoxObjectFor) { // gecko
         box = document.getBoxObjectFor(el);
@@ -1568,6 +1561,9 @@
     return this.__contextmenu;
 }
 
+LzSprite.prototype.setRotation = function(r) {
+    this.__LZdiv.style['-webkit-transform'] = 'rotate(' + r + 'deg)';
+}
 
 if (LzSprite.prototype.quirks.ie_leak_prevention) {
     LzSprite.prototype.__sprites = {};

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzContextMenu.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzContextMenu.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzContextMenu.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -27,8 +27,8 @@
                                this.setDelegate(del);
                            }
 
-DeclareEvent(prototype, 'onmenuopen' );
-DeclareEvent(prototype, 'onselect' );
+var onmenuopen = LzDeclaredEvent;
+var onselect = LzDeclaredEvent;
 
 
 /**

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzInputTextSprite.as
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzInputTextSprite.as	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzInputTextSprite.as	2007-11-05 23:35:46 UTC (rev 7140)
@@ -57,10 +57,7 @@
 
 LzInputTextSprite.prototype = new LzTextSprite(null);
 
-LzInputTextSprite.prototype.defaultattrs.selectable = true;
-LzInputTextSprite.prototype.defaultattrs.enabled = true;
 
-
 /**
   * @access private
   */

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzLoadQueue.as
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzLoadQueue.as	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzLoadQueue.as	2007-11-05 23:35:46 UTC (rev 7140)
@@ -94,8 +94,10 @@
   */
 LzLoadQueue.XMLOnDataHandler = function (src) {
     if (src == undefined) {
-        Debug.warn("LzLoadQueue.XMLOnDataHandler load failed from URL %w, no data received.", this.url);
-        Debug.warn("Failure to load data in serverless apps may be caused by Flash player security policies. Check your data server crossdomain.xml file");
+        if (!this.proxied) {
+            Debug.warn("LzLoadQueue.XMLOnDataHandler load failed from URL %w, no data received.", this.url);
+            Debug.warn("Failure to load data in serverless apps may be caused by Flash player security policies. Check your data server crossdomain.xml file");
+        }
         this.onload(false);
         //Debug.write("this.loader.onerror.ready =", this.loader.onerror.ready);
         if (this.loader.onerror.ready) {

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzLoader.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzLoader.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzLoader.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -75,10 +75,10 @@
 }
 
 
-DeclareEvent(prototype, 'onerror' );
-DeclareEvent(prototype, 'ondata' );
-DeclareEvent(prototype, 'onrequest' );
-DeclareEvent(prototype, 'ontimeout' );
+var onerror = LzDeclaredEvent;
+var ondata = LzDeclaredEvent;
+var onrequest = LzDeclaredEvent;
+var ontimeout = LzDeclaredEvent;
 
 var requestheaders = {};
 var timeout = 30000;

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzMediaLoader.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzMediaLoader.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzMediaLoader.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -38,8 +38,8 @@
         }
     }
 
-DeclareEvent(prototype, 'onstreamstart' );
-DeclareEvent(prototype, 'onloaddone' );
+var onstreamstart = LzDeclaredEvent;
+var onloaddone = LzDeclaredEvent;
 
 
 var LOADERDEPTH = 9;

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzSprite.as
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzSprite.as	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzSprite.as	2007-11-05 23:35:46 UTC (rev 7140)
@@ -15,6 +15,7 @@
 
 
     if (isroot) {
+        this.isroot = true;
         var is = _root.spriteroot;
         if (! is) {
             var is = _root.attachMovie('empty', 'spriteroot', 1000);
@@ -218,6 +219,16 @@
 LzSprite.prototype.init = function( ) {
     this.__LZmovieClipRef._visible = this.visible;
     this.__LZbgRef._visible = this.visible;
+    if (this.isroot) {
+        // Expose your methods
+        DojoExternalInterface.addCallback("getCanvasAttribute", LzHistory, LzHistory.getCanvasAttribute);
+        DojoExternalInterface.addCallback("setCanvasAttribute", LzHistory, LzHistory.setCanvasAttribute);
+        DojoExternalInterface.addCallback("callMethod", LzHistory, LzHistory.callMethod);
+        DojoExternalInterface.addCallback("receiveHistory", LzHistory, LzHistory.receiveHistory);
+
+        // Tell JavaScript that you are ready to have method calls
+        DojoExternalInterface.loaded();
+    }
 }
 
 

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzTextSprite.as
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzTextSprite.as	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf/LzTextSprite.as	2007-11-05 23:35:46 UTC (rev 7140)
@@ -583,7 +583,7 @@
 
     if (this.font != null) {
         this.lineheight = this.font.leading + ( this.font.height *
-                                                this.fontsize/ LzText.DEFAULT_SIZE );
+                                                this.fontsize/ this.DEFAULT_SIZE );
     }
 }
 

Copied: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9 (from rev 7041, openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9)

Deleted: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/Library.lzs

Copied: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/Library.lzs (from rev 7041, openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/Library.lzs)

Deleted: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzAudio.lzs

Copied: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzAudio.lzs (from rev 7041, openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzAudio.lzs)

Deleted: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzContextMenu.lzs

Copied: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzContextMenu.lzs (from rev 7041, openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzContextMenu.lzs)

Deleted: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzFontManager.lzs

Copied: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzFontManager.lzs (from rev 7041, openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzFontManager.lzs)

Deleted: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzFunctions.lzs

Copied: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzFunctions.lzs (from rev 7041, openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzFunctions.lzs)

Deleted: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzHTTPLoader.lzs

Copied: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzHTTPLoader.lzs (from rev 7041, openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzHTTPLoader.lzs)

Deleted: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzInputTextSprite.lzs

Copied: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzInputTextSprite.lzs (from rev 7041, openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzInputTextSprite.lzs)

Deleted: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzKeyboardKernel.lzs

Copied: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzKeyboardKernel.lzs (from rev 7041, openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzKeyboardKernel.lzs)

Deleted: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzLibrary.lzs

Copied: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzLibrary.lzs (from rev 7041, openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzLibrary.lzs)

Deleted: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzLibraryLoader.lzs

Copied: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzLibraryLoader.lzs (from rev 7041, openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzLibraryLoader.lzs)

Deleted: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzLoadQueue.lzs

Copied: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzLoadQueue.lzs (from rev 7041, openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzLoadQueue.lzs)

Deleted: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzLoader.lzs

Copied: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzLoader.lzs (from rev 7041, openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzLoader.lzs)

Deleted: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzMakeLoadSprite.lzs

Copied: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzMakeLoadSprite.lzs (from rev 7041, openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzMakeLoadSprite.lzs)

Deleted: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzMediaLoader.lzs

Copied: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzMediaLoader.lzs (from rev 7041, openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzMediaLoader.lzs)

Deleted: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzMouseKernel.lzs

Copied: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzMouseKernel.lzs (from rev 7041, openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzMouseKernel.lzs)

Deleted: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzRequires.lzs

Copied: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzRequires.lzs (from rev 7041, openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzRequires.lzs)

Deleted: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzScreenKernel.lzs

Copied: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzScreenKernel.lzs (from rev 7041, openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzScreenKernel.lzs)

Deleted: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzSoundMC.lzs

Copied: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzSoundMC.lzs (from rev 7041, openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzSoundMC.lzs)

Deleted: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzSprite.lzs

Copied: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzSprite.lzs (from rev 7041, openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzSprite.lzs)

Deleted: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzTextSprite.lzs

Copied: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzTextSprite.lzs (from rev 7041, openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzTextSprite.lzs)

Deleted: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzXMLParser.lzs

Copied: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzXMLParser.lzs (from rev 7041, openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzXMLParser.lzs)

Deleted: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzXMLTranslator.lzs

Copied: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/kernel/swf9/LzXMLTranslator.lzs (from rev 7041, openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzXMLTranslator.lzs)

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/LzFocus.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/LzFocus.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/LzFocus.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -24,7 +24,7 @@
 /** Sent when the focus changes, with the argument being the view
   * that was just focused. If nothing is focussed, this event is sent with null.
   */
-DeclareEvent(LzFocus, 'onfocus' );
+LzFocus.onfocus = LzDeclaredEvent;
 
 /** A reference to the last view that held the focus
   * @type LzView

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/LzGlobalMouse.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/LzGlobalMouse.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/LzGlobalMouse.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -74,9 +74,9 @@
   */
 var LzGlobalMouse = new Object;
 
-DeclareEvent(LzGlobalMouse, 'onmousemove' );
-DeclareEvent(LzGlobalMouse, 'onmouseup' );
-DeclareEvent(LzGlobalMouse, 'onmousedown' );
+LzGlobalMouse.onmousemove = LzDeclaredEvent;
+LzGlobalMouse.onmouseup = LzDeclaredEvent;
+LzGlobalMouse.onmousedown = LzDeclaredEvent;
 
 LzGlobalMouse.__movecounter = 0;
 

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/LzIdle.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/LzIdle.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/LzIdle.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -76,7 +76,7 @@
 }
 
 /** This is the idle event for the system, sent by this service */
-DeclareEvent( prototype, 'onidle' );
+var onidle = LzDeclaredEvent;
 
 function toString () { return "LzIdle" }; // LzIdle in case somebody checks it
 

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/LzModeManager.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/LzModeManager.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/LzModeManager.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -50,7 +50,7 @@
 var LzModeManager = new Object();
 
 /** Sent when the mode changes. */
-DeclareEvent(LzModeManager, 'onmode' );
+LzModeManager.onmode = LzDeclaredEvent;
 
 /** @access private */
 LzModeManager.__LZlastclick = null;

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/platform/dhtml/LzHistory.js
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/platform/dhtml/LzHistory.js	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/platform/dhtml/LzHistory.js	2007-11-05 23:35:46 UTC (rev 7140)
@@ -54,7 +54,7 @@
 /** @access private */
 LzHistory.__lzcurrstate = {};
 
-DeclareEvent(LzHistory, 'onoffset' );
+LzHistory.onoffset = LzDeclaredEvent;
 
 
 /**

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/platform/dhtml/LzKeys.js
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/platform/dhtml/LzKeys.js	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/platform/dhtml/LzKeys.js	2007-11-05 23:35:46 UTC (rev 7140)
@@ -17,9 +17,9 @@
   */
 var LzKeys = {};
 LzKeys.downKeysHash = {};
-DeclareEvent(LzKeys, 'onkeydown' );
-DeclareEvent(LzKeys, 'onkeyup' );
-DeclareEvent(LzKeys, 'onmousewheeldelta' );
+LzKeys.onkeydown = LzDeclaredEvent;
+LzKeys.onkeyup = LzDeclaredEvent;
+LzKeys.onmousewheeldelta = LzDeclaredEvent;
 
 /**
   * @field Number mousewheeldelta: the amount the mouse wheel last moved.  Use

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/platform/swf/LzHistory.as
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/platform/swf/LzHistory.as	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/platform/swf/LzHistory.as	2007-11-05 23:35:46 UTC (rev 7140)
@@ -58,7 +58,7 @@
 /** @access private */
 LzHistory.__lzcurrstate = {};
 
-DeclareEvent(LzHistory, 'onoffset' );
+LzHistory.onoffset = LzDeclaredEvent;
 
 /**
   * @access private

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/platform/swf/LzKeys.as
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/platform/swf/LzKeys.as	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/services/platform/swf/LzKeys.as	2007-11-05 23:35:46 UTC (rev 7140)
@@ -54,13 +54,13 @@
   * event sent when a key is pressed; sent with keycode 
   * for key that was pressed.
   */
-DeclareEvent(LzKeys, 'onkeydown' );
+LzKeys.onkeydown = LzDeclaredEvent;
 /**
   * event sent whenever a key goes up; sent with keycode
   * for key that was let go.
   */
-DeclareEvent(LzKeys, 'onkeyup' );
-DeclareEvent(LzKeys, 'onmousewheeldelta' );
+LzKeys.onkeyup = LzDeclaredEvent;
+LzKeys.onmousewheeldelta = LzDeclaredEvent;
 
 LzKeyboardKernel.setCallback(LzKeys, '__keyEvent');
 /** @access private */

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/views/LaszloCanvas.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/views/LaszloCanvas.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/views/LaszloCanvas.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -244,13 +244,13 @@
 var initdelay = 0;
 
 /** Sent whenever the number of created nodes changes */
-DeclareEvent(prototype, 'onpercentcreated');
+var onpercentcreated = LzDeclaredEvent;
 /** Sent whenever the mouse button goes down*/
-DeclareEvent(prototype, 'onmousedown');
+var onmousedown = LzDeclaredEvent;
 /** Sent whenever the mouse button goes up*/
-DeclareEvent(prototype, 'onmouseup');
+var onmouseup = LzDeclaredEvent;
 /** Sent whenever the mouse moves */
-DeclareEvent(prototype, 'onmousemove');
+var onmousemove = LzDeclaredEvent;
 
 /** version number of the LPS that generated this application (for .lzo files,
   * this is the version number of the server that generated the optimized file, not the one 

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/views/LaszloView.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/views/LaszloView.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/views/LaszloView.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -77,32 +77,32 @@
 static var tagname = 'view';
 
 /** Event called when this view adds a subview */
-DeclareEvent(prototype, 'onaddsubview' );
-DeclareEvent(prototype, 'onbgcolor' );
+var onaddsubview = LzDeclaredEvent;
+var onbgcolor = LzDeclaredEvent;
 /** The onblur script is executed when an element loses focus either
   * by the pointing device or by tabbing navigation.
   */
-DeclareEvent(prototype, 'onblur' );
+var onblur = LzDeclaredEvent;
 /** The onclick script is executed when the pointing device button is
   * clicked over an element.
   */
-DeclareEvent(prototype, 'onclick' );
-DeclareEvent(prototype, 'onclickable' );
+var onclick = LzDeclaredEvent;
+var onclickable = LzDeclaredEvent;
 /** The onfocus script is executed when an element receives focus
   * either by the pointing device or by tabbing navigation.
   */
-DeclareEvent(prototype, 'onfocus');   // From LzFocus
-DeclareEvent(prototype, 'onframe');
+var onfocus = LzDeclaredEvent;   // From LzFocus
+var onframe = LzDeclaredEvent;
 
 /** Event for changes to view's <attribute>height</attribute> property */
-DeclareEvent(prototype, 'onheight' );
-DeclareEvent(prototype, 'onimload' );
+var onheight = LzDeclaredEvent;
+var onimload = LzDeclaredEvent;
 
 /** The onkeyup script is executed when this view has the focus and a
   * key is released. This event is sent with the keycode for the key that 
   * went up.
   */
-DeclareEvent(prototype, 'onkeyup' );   // From LzFocus
+var onkeyup = LzDeclaredEvent;   // From LzFocus
 
 /** The onkeydown script is executed when this view has the focus and
   * a key is pressed down.  Multiple key down events are sent for a
@@ -110,71 +110,71 @@
   * once, use onkeyup. This event is sent with the keycode for the key that is
   * down.
   */
-DeclareEvent(prototype, 'onkeydown' ); // From LzFocus
-DeclareEvent(prototype, 'onlastframe' );
-DeclareEvent(prototype, 'onload' );
-DeclareEvent(prototype, 'onloadperc' );
+var onkeydown = LzDeclaredEvent; // From LzFocus
+var onlastframe = LzDeclaredEvent;
+var onload = LzDeclaredEvent;
+var onloadperc = LzDeclaredEvent;
 
 /** <event>onerror</event>: Sent when there is an error loading the view's resource.
   * The argument sent with the event is the error string sent by the server.
   */
-DeclareEvent(prototype, 'onerror' );
+var onerror = LzDeclaredEvent;
 
 /**
   * <event>ontimeout</event>: Sent when the request to load media for the view times
   * out
   */
-DeclareEvent(prototype, 'ontimeout' );
+var ontimeout = LzDeclaredEvent;
 /** The onmousedown script is executed when the pointing device button is
   * pressed over an element.
   */
-DeclareEvent(prototype, 'onmousedown' );
+var onmousedown = LzDeclaredEvent;
 
 /** The onmouseout script is executed when the point device is moved
   * so that is is no longer over an element.
   */
-DeclareEvent(prototype, 'onmouseout' );
+var onmouseout = LzDeclaredEvent;
 /** The onmouseover script is executed when the pointing device is
   * moved onto an element.
   */
-DeclareEvent(prototype, 'onmouseover' );
-DeclareEvent(prototype, 'onmousetrackover');
-DeclareEvent(prototype, 'onmousetrackup');
+var onmouseover = LzDeclaredEvent;
+var onmousetrackover = LzDeclaredEvent;
+var onmousetrackup = LzDeclaredEvent;
 
 /** The onmouseup script is executed when the pointing device button is
   * released over an element.
   */
-DeclareEvent(prototype, 'onmouseup' );
+var onmouseup = LzDeclaredEvent;
 /** Sent when a view changes its opacity */
-DeclareEvent(prototype, 'onopacity' );
+var onopacity = LzDeclaredEvent;
 
-DeclareEvent(prototype, 'onplay' );
+var onplay = LzDeclaredEvent;
 
 /** Event called when this view removes a subview */
-DeclareEvent(prototype, 'onremovesubview' );
+var onremovesubview = LzDeclaredEvent;
 
-DeclareEvent(prototype, 'onresource' );
-DeclareEvent(prototype, 'onresourceheight');
-DeclareEvent(prototype, 'onresourcewidth');
-DeclareEvent(prototype, 'onrotation' );
-DeclareEvent(prototype, 'onstop' );
-DeclareEvent(prototype, 'ontotalframes' );
-DeclareEvent(prototype, 'onunstretchedheight' );
-DeclareEvent(prototype, 'onunstretchedwidth' );
-DeclareEvent(prototype, 'onvisible' );
+var onresource = LzDeclaredEvent;
+var onresourceheight = LzDeclaredEvent;
+var onresourcewidth = LzDeclaredEvent;
+var onrotation = LzDeclaredEvent;
+var onstop = LzDeclaredEvent;
+var ontotalframes = LzDeclaredEvent;
+var onunstretchedheight = LzDeclaredEvent;
+var onunstretchedwidth = LzDeclaredEvent;
+var onvisible = LzDeclaredEvent;
 /** @access private */
-DeclareEvent(prototype, 'onvisibility' );
+var onvisibility = LzDeclaredEvent;
 
 /** event for changes to view's <attribute>width</attribute> property */
-DeclareEvent(prototype, 'onwidth' );
+var onwidth = LzDeclaredEvent;
 
 /** event for changes to view's <attribute>x</attribute> property */
-DeclareEvent(prototype, 'onx' );
-DeclareEvent(prototype, 'onxoffset' );
+var onx = LzDeclaredEvent;
+var onxoffset = LzDeclaredEvent;
 
 /** event for changes to view's <attribute>y</attribute> property */
-DeclareEvent(prototype, 'ony' );
-DeclareEvent(prototype, 'onyoffset' );
+var ony = LzDeclaredEvent;
+var onyoffset = LzDeclaredEvent;
 
 /**
   * The ondblclick script is executed when the pointing device button
@@ -187,7 +187,7 @@
   * The view's doubleclick time can be adjusted by setting its
   * DOUBLE_CLICK_TIME attribute
   */
-DeclareEvent(prototype, 'ondblclick' );
+var ondblclick = LzDeclaredEvent;
 var DOUBLE_CLICK_TIME = 500;
 
 var capabilities = LzSprite.prototype.capabilities;

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/views/LzInputText.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/views/LzInputText.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/views/LzInputText.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -73,11 +73,11 @@
 class LzInputText extends LzText {
 
 
-DeclareEvent(prototype, 'onenabled');
-DeclareEvent(prototype, 'onselect');
+var onenabled = LzDeclaredEvent;
+var onselect = LzDeclaredEvent;
 
 /**  whenever the text in the field changes. */
-DeclareEvent(prototype, 'ontext');
+var ontext = LzDeclaredEvent;
 
 /** @access private
   * @modifiers override 

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/lfc/views/LzText.lzs
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/lfc/views/LzText.lzs	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/lfc/views/LzText.lzs	2007-11-05 23:35:46 UTC (rev 7140)
@@ -79,13 +79,13 @@
 static var tagname = 'text';
 
 /** Sent whenever the text in the field changes. */
-DeclareEvent(prototype, 'ontext');
-DeclareEvent(prototype, 'onmaxlength');
-DeclareEvent(prototype, 'onpattern');
-DeclareEvent(prototype, 'onscroll');
-DeclareEvent(prototype, 'onmaxscroll');
-DeclareEvent(prototype, 'onhscroll');
-DeclareEvent(prototype, 'onmaxhscroll');
+var ontext = LzDeclaredEvent;
+var onmaxlength = LzDeclaredEvent;
+var onpattern = LzDeclaredEvent;
+var onscroll = LzDeclaredEvent;
+var onmaxscroll = LzDeclaredEvent;
+var onhscroll = LzDeclaredEvent;
+var onmaxhscroll = LzDeclaredEvent;
 
 /**
   * @access private
@@ -437,6 +437,10 @@
     this.sprite.setMaxLength(val);
     this.maxlength = val;
     if (this.onmaxlength.ready) this.onmaxlength.sendEvent(val);
+
+    if(this.text && this.text.length > this.maxlength){
+        this.setText (this.text, true);
+    }
 }
 
 /**
@@ -663,7 +667,7 @@
   */
 function setText ( t, force ){
     // force to a string
-    t += '';
+    t = '' + t;
     if (force != true && t == this.text) return;
     if (this.visible) this.sprite.setVisible(this.visible);
     if (this.maxlength != null && t.length > this.maxlength){

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/schema/lfc.lzx
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/schema/lfc.lzx	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/schema/lfc.lzx	2007-11-05 23:35:46 UTC (rev 7140)
@@ -25,7 +25,12 @@
   <method name="isPrototypeOf" override="false"/>
   <method name="toLocaleString" override="false"/>
   <method name="prototype" override="false"/>
-  <method name="apply" override="false"/>
+  <!-- 
+   'apply' is ambiguous because <state> is
+   using it for both a method and an attribute. Just omit it from
+   the declarations for now.
+  <method name="apply" override="false"/> 
+  -->
   <method name="call" override="false"/>
 </interface>
 
@@ -504,8 +509,10 @@
 
 <interface name="state" extends="node">
   <!-- This is unfortunately both a setter attribute AND a method. No
-       real nice way to represent that. -->
-  <method name="apply" override="true" />
+       real nice way to represent that.
+   -->
+  <attribute name="apply" override="true" />
+
   <!-- If pooling is true, views that are created by the state are not
        destroyed when the state is removed - instead they just act as
        if they were by sending the onremovesubview event and setting

Deleted: openlaszlo/branches/paperpie/WEB-INF/lps/server/jgenerator-2.2/src/org/openlaszlo/iv/flash/url/FTPUrl.java

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/server/jgenerator-2.2/src/org/openlaszlo/iv/flash/url/IVUrl.java
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/server/jgenerator-2.2/src/org/openlaszlo/iv/flash/url/IVUrl.java	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/server/jgenerator-2.2/src/org/openlaszlo/iv/flash/url/IVUrl.java	2007-11-05 23:35:46 UTC (rev 7140)
@@ -5,7 +5,7 @@
  *
  * The JGenerator Software License, Version 1.0
  *
- * Copyright (c) 2000 Dmitry Skavish (skavish at usa.net). All rights reserved.
+ * Copyright (c) 2000-2007 Dmitry Skavish (skavish at usa.net). All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
@@ -111,15 +111,6 @@
             }
         } else if( surl.startsWith("fgfilter:///") ) {
             return new FilterUrl( surl, flashFile );
-        } else if ( surl.startsWith("ftp://") || surl.startsWith("fgftp://") ) {
-            try {
-                return (IVUrl) Util.newInstance(
-                               "org.openlaszlo.iv.flash.url.FTPUrl",
-                                new Class[] { String.class, Boolean.class },
-                                new Object[] { surl, new Boolean(surl.startsWith("fgftp://")) });
-            } catch( Exception e ) {
-                throw new IVException(e);
-            }
         } else {
             try {
                 URL url = new URL(surl);

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/compiler/CompilationEnvironment.java
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/compiler/CompilationEnvironment.java	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/compiler/CompilationEnvironment.java	2007-11-05 23:35:46 UTC (rev 7140)
@@ -78,9 +78,6 @@
      */
     private CompilerMediaCache mMediaCache = null;
 
-    /** A cache of a compiled validator */
-    private org.iso_relax.verifier.Verifier cachedVerifier = null;
-
     /** {canonical filenames} for libraries that have been imported;
      * used to prevent recursive processing and including the same
      * library more than once. */
@@ -501,16 +498,6 @@
         }
     }
 
-    /** Holds the cached schema verifier */
-    org.iso_relax.verifier.Verifier getCachedVerifier () {
-        return cachedVerifier;
-    }
-
-    /** Use this to cache the schema verifier (call with null to flush the cache) */
-    void setCachedVerifier (org.iso_relax.verifier.Verifier verifier) {
-        cachedVerifier = verifier;
-    }
-
     /**
      * @return a unique name in the SWF
      */

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/compiler/NodeModel.java
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/compiler/NodeModel.java	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/compiler/NodeModel.java	2007-11-05 23:35:46 UTC (rev 7140)
@@ -1207,7 +1207,7 @@
             // Method declarations inside of class definitions will be already checked elsewhere,
             // in the call from ClassCompiler.updateSchema to schema.addElement
             if (!"class".equals(classname)) {
-                schema.checkMethodDeclaration(element, classname, name, env);
+                schema.checkInstanceMethodDeclaration(element, classname, name, env);
             }
         }
 

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/compiler/Parser.java
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/compiler/Parser.java	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/compiler/Parser.java	2007-11-05 23:35:46 UTC (rev 7140)
@@ -12,7 +12,6 @@
 import java.lang.*;
 import java.util.*;
 import org.apache.log4j.Logger;
-import org.iso_relax.verifier.*;
 import org.jdom.Attribute;
 import org.jdom.Document;
 import org.jdom.Content;

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/compiler/ViewSchema.java
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/compiler/ViewSchema.java	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/compiler/ViewSchema.java	2007-11-05 23:35:46 UTC (rev 7140)
@@ -216,6 +216,39 @@
         }
     }
 
+    /** Checks to do when declaring a method on an instance;
+     * Does the class exist?
+     * Does the superclass allow overriding of this method?
+     */
+    public void checkInstanceMethodDeclaration (Element elt, String classname, String methodName,
+                                        CompilationEnvironment env) {
+        ClassModel classModel = getClassModel(classname);
+        if (classModel == null) {
+            throw new RuntimeException(
+/* (non-Javadoc)
+ * @i18n.test
+ * @org-mes="undefined class: " + p[0]
+ */
+            org.openlaszlo.i18n.LaszloMessages.getMessage(
+                ViewSchema.class.getName(),"051018-168", new Object[] {classname})
+                                       );
+        }
+        AttributeSpec attrspec = classModel.getAttribute(methodName);
+        if ( attrspec != null) {
+            if (attrspec.type != METHOD_TYPE) {
+                env.warn(
+                    "Method named "+methodName+" on class "+classname+
+                    " conflicts with attribute with named "+methodName+" and type "+attrspec.type,
+                    elt);
+            }
+        }
+
+        if (!methodOverrideAllowed(classname, methodName)) {
+            env.warn("Method "+classname+"."+methodName+" is overriding a superclass method"
+                     + " of the same name which has been declared non-overridable" , elt);
+        }
+    }
+
     public String getSuperclassName(String className) {
         ClassModel model = getClassModel(className);
         if (model == null)
@@ -401,7 +434,7 @@
         if (mClassMap.get(classname) == null) {
             mClassMap.put(classname, info);
         } else {
-            throw new CompilationError("makeNewStaticClass: duplicate definition for static class " + classname);
+            throw new CompilationError("makeNewStaticClass: `duplicate definition for static class " + classname);
         }
     }
 

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/data/DataSource.java
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/data/DataSource.java	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/data/DataSource.java	2007-11-05 23:35:46 UTC (rev 7140)
@@ -3,7 +3,7 @@
  * ****************************************************************************/
 
 /* J_LZ_COPYRIGHT_BEGIN *******************************************************
-* Copyright 2001-2004 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * J_LZ_COPYRIGHT_END *********************************************************/
 
@@ -169,7 +169,7 @@
                         org.openlaszlo.i18n.LaszloMessages.getMessage(
                                 DataSource.class.getName(),"051018-169", new Object[] {new Long(size)})
 );
-                res.setContentLength((int)size);
+                //res.setContentLength((int)size);
             }
 
             if (doClientCache) {

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/data/HTTPDataSource.java
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/data/HTTPDataSource.java	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/data/HTTPDataSource.java	2007-11-05 23:35:46 UTC (rev 7140)
@@ -614,215 +614,8 @@
                                 HTTPDataSource.class.getName(),"051018-592", new Object[] {new Integer(code), HttpStatus.getStatusText(code)});
     }
 
-    /**
-     * A class for holding on to results of an Http fetch.
-     *
-     * @author <a href="mailto:bloch at laszlosystems.com">Eric Bloch</a>
-     */
 
-    public static class HttpData extends Data {
 
-        /** response code */
-        public final int code;
-    
-        /** Http request */
-        public final HttpMethodBase  request;
-    
-        private PatternMatcher pMatcher = new Perl5Matcher();
-        private static final Pattern charsetPattern;
-        private static final Pattern declEncodingPattern;
-        static {
-            try {
-                Perl5Compiler compiler = new Perl5Compiler();
-                charsetPattern = compiler.compile(";charset=([^ ]*)");
-                declEncodingPattern =
-                    compiler.compile("[ \t\r\n]*<[?]xml .*encoding=[\"']([^ \"']*)[\"'] .*[?]>");
-            } catch (MalformedPatternException e) {
-                throw new RuntimeException(e.getMessage());
-            }
-        }
-
-        /** 
-         * @param r filled request
-         * @param c response code
-         */
-        public HttpData(HttpMethodBase r, int c) {
-            code = c;
-            request = r;
-        }
-    
-        /**
-         * @return true if the data was "not modified"
-         */
-        public boolean notModified() {
-            return code == HttpServletResponse.SC_NOT_MODIFIED;
-        }
-    
-        /**
-         * @return the lastModified time of the data
-         */
-        public long lastModified() {
-    
-            Header lastModifiedHdr = request.getResponseHeader(
-                LZHttpUtils.LAST_MODIFIED);
-                        
-            if (lastModifiedHdr != null) {
-                String lm = lastModifiedHdr.getValue();
-                mLogger.debug(
-/* (non-Javadoc)
- * @i18n.test
- * @org-mes="data with last modified at " + p[0]
- */
-                        org.openlaszlo.i18n.LaszloMessages.getMessage(
-                                HTTPDataSource.class.getName(),"051018-655", new Object[] {lm})
-);
-                long l = LZHttpUtils.getDate(lm);
-                // Truncate to nearest second
-                return ((l)/1000L) * 1000L;
-            } else {
-                mLogger.debug(
-/* (non-Javadoc)
- * @i18n.test
- * @org-mes="data has no mod time"
- */
-                        org.openlaszlo.i18n.LaszloMessages.getMessage(
-                                HTTPDataSource.class.getName(),"051018-667")
-);
-                return -1;
-            }
-        }
-    
-        /**
-         * append response headers
-         */
-        public void appendResponseHeadersAsXML(StringBuffer xmlResponse) {
-    
-            Header[] hedz = request.getResponseHeaders();
-            for (int i = 0; i < hedz.length; i++) {
-                String name = hedz[i].getName();
-                if (LZHttpUtils.allowForward(name, null)) {
-                    xmlResponse.append("<header name=\""+ XMLUtils.escapeXml( name ) + "\" " 
-                                     + "value=\""       + XMLUtils.escapeXml( hedz[i].getValue() ) + "\" />");
-                }
-            }
-        }
-    
-        /**
-         * release any resources associated with this data
-         */
-        public void release() {
-            request.releaseConnection();
-        }
-
-        /**
-         * @return mime type 
-         */
-        public String getMimeType() {
-            Header hdr = request.getResponseHeader(LZHttpUtils.CONTENT_TYPE);
-            String contentType = "";
-            if (hdr != null) {
-                contentType = hdr.getValue();
-            }
-            mLogger.debug(
-/* (non-Javadoc)
- * @i18n.test
- * @org-mes="content type: " + p[0]
- */
-                        org.openlaszlo.i18n.LaszloMessages.getMessage(
-                                HTTPDataSource.class.getName(),"051018-710", new Object[] {contentType})
-);
-            return contentType;
-        }
-
-        /**
-         * @return string
-         */
-        public String getAsString() throws IOException {
-            byte rawbytes[] = request.getResponseBody();
-            if (rawbytes == null || rawbytes.length == 0) {
-                throw new InterruptedIOException("null http response body");
-            }
-            String encoding = "UTF-8";
-            String content = getMimeType();
-            // search for ;charset=XXXX in Content-Type header
-            if (pMatcher.matches(content, charsetPattern)) {
-                encoding = pMatcher.getMatch().group(1);
-            }
-            // search for 'encoding' attribute in xml declaration, e.g.,
-            // <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
-            
-            String decl = getXMLDeclaration(rawbytes);
-            if (pMatcher.matches(decl, declEncodingPattern)) {
-                encoding = pMatcher.getMatch().group(1);
-                //mLogger.debug("parsed data encoding: " + encoding);
-            }
-            
-            return new String(rawbytes, encoding);
-        }
-
-        /** Returns the first non-whitespace line.
-         *
-         */
-        String getXMLDeclaration(byte buf[]) {
-            String str = new String(buf);
-            BufferedReader br = new BufferedReader(new StringReader(str));
-            String line;
-            while (true) {
-                try { line = br.readLine(); } catch (IOException e) { return ""; }
-                if (line == null) {
-                    return "";
-                }
-                if (line.length() == 0) continue;
-                if (line.startsWith("<?xml ")) {
-                    return line;
-                } else {
-                    return "";
-                }
-            }
-        }
-
-        /**
-         * @return input stream
-         */
-        public InputStream getInputStream() throws IOException {
-            InputStream str = request.getResponseBodyAsStream();
-            if (str == null) {
-                throw new IOException(
-/* (non-Javadoc)
- * @i18n.test
- * @org-mes="http response body is null"
- */
-                        org.openlaszlo.i18n.LaszloMessages.getMessage(
-                                HTTPDataSource.class.getName(),"051018-774")
-);
-            }
-            return str;
-        }
-
-        /**
-         * @return size, if known
-         */
-        public long size() {
-            Header hdr = request.getResponseHeader(LZHttpUtils.CONTENT_LENGTH);
-            if (hdr != null) {
-                String contentLength = hdr.getValue();
-                if (contentLength != null) {
-                    mLogger.debug(
-/* (non-Javadoc)
- * @i18n.test
- * @org-mes="content length: " + p[0]
- */
-                        org.openlaszlo.i18n.LaszloMessages.getMessage(
-                                HTTPDataSource.class.getName(),"051018-794", new Object[] {contentLength})
-);
-                    int cl = Integer.parseInt(contentLength);
-                    return cl;
-                }
-            }
-            return -1;
-        }
-    }
-
     public static int getConnectionPoolTimeout() {
         return mConnectionPoolTimeout;
     }

Copied: openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/data/HttpData.java (from rev 7133, openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/data/HttpData.java)

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/data/XMLGrabber.java
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/data/XMLGrabber.java	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/data/XMLGrabber.java	2007-11-05 23:35:46 UTC (rev 7140)
@@ -8,7 +8,7 @@
 * ****************************************************************************/
 
 /* J_LZ_COPYRIGHT_BEGIN *******************************************************
-* Copyright 2001-2006 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * J_LZ_COPYRIGHT_END *********************************************************/
 
@@ -23,6 +23,7 @@
 import org.apache.log4j.*;
 
 import org.openlaszlo.utils.ContentEncoding;
+import org.openlaszlo.utils.LZHttpUtils;
 
 import org.openlaszlo.media.MimeType;
 import org.openlaszlo.server.LPS;
@@ -35,7 +36,14 @@
 import org.jdom.input.SAXBuilder;
 import org.jdom.output.XMLOutputter;
 
+import org.apache.commons.httpclient.*;
+import org.apache.commons.httpclient.methods.*;
+import org.apache.commons.httpclient.util.*;
 
+import org.xmlpull.v1.*;
+
+
+
 /**
  * XML Converter
  *
@@ -43,10 +51,33 @@
 public class XMLGrabber extends Converter {
     
     private static Logger mLogger  = Logger.getLogger(XMLGrabber.class);
+    private static XmlPullParserFactory factory = null;
 
+    private static XmlPullParserFactory getXPPFactory () {
+        if (factory == null) {
+            // Set up the XML Parser factory
+            try {
+                String sys = null; 
+                try {
+                    sys = System.getProperty(XmlPullParserFactory.PROPERTY_NAME);
+                } catch (SecurityException se) {
+                }
+                factory = XmlPullParserFactory.newInstance(sys, null);
+                factory.setNamespaceAware(false);
+                factory.setValidating(false);
+            } catch (XmlPullParserException e) {
+                throw new RuntimeException(e.getMessage());
+            } 
+        }
+        return factory;
+    }
+
     /**
      * Convert incoming XML to ... XML 
      *
+     * This method is called convertToSWF for historical reasons, and nobody
+     * has changed the API call name yet. 
+     *
      * A dataset will look like this:
      * <resultset>
      * <body>
@@ -61,63 +92,193 @@
      * </headers>
      * </resultset>
      */
+
     public InputStream convertToSWF(Data data, HttpServletRequest req,
                                     HttpServletResponse res)
        throws ConversionException, IOException {
 
-        String body = data.getAsString();
+        try {
+            PipedOutputStream pout = new PipedOutputStream();
+            PipedInputStream in = new PipedInputStream(pout);
 
-        // Get headers
-        String sendheaders = req.getParameter("sendheaders");
-        StringBuffer headerbuf = new StringBuffer();
-        headerbuf.append("<headers>\n");
-        if (sendheaders == null || sendheaders.equals("true") ) {
-            data.appendResponseHeadersAsXML(headerbuf);
-        }
-        headerbuf.append("</headers>");
-        String headers = headerbuf.toString();
+            XmlSerializer serializer;
+            XmlPullParser parser;
+            parser = getXPPFactory().newPullParser();
+            InputStream dstream = data.getInputStream();
+            parser.setInput( dstream, null );
+            serializer = factory.newSerializer();
+            serializer.setOutput(pout , "UTF-8");
 
-        if (mLogger.isDebugEnabled()) {
-            mLogger.info("Output:" + body.length());
-            mLogger.info("Output:\n" + body);
-            mLogger.info("Output Headers:" + headers.length());
-            mLogger.info("Output Headers:\n" + headers);
+            HttpMethodBase request = ((HttpData) data).getRequest();
+
+            final String sendheaders = req.getParameter("sendheaders");
+
+            XMLCopyThread worker = new XMLCopyThread(pout, parser,serializer, request, sendheaders);
+            worker.start();
+
+            return in;
+
+        } catch (XmlPullParserException ex) {
+            throw new ConversionException("Parsing XML: " + ex.getMessage());
         }
+    }
 
-        // Default to true, for back compatibility (sigh)
-        boolean trimWhitespace = true;
-        String trimval = req.getParameter("trimwhitespace");
-        if ("false".equals(trimval)) {
-                trimWhitespace = false;
+    // Worker thread to parse XML (which serves to translate obscure
+    // charsets to UTF-8) and wrap it in <resultset>, possibly adding
+    // proxied HTTP headers from backedn response.
+    // This is written to the PipedOutputStream which we were passed.
+    class XMLCopyThread extends Thread implements Runnable {
+        OutputStream pout = null;    
+        XmlPullParser parser;
+        XmlSerializer serializer;
+        HttpMethodBase request;
+        String sendheaders = null;
+        
+        XMLCopyThread( OutputStream pout, XmlPullParser parser, XmlSerializer serializer,
+                       HttpMethodBase request,
+                       String sendheaders) {
+            this.pout = pout;
+            this.parser = parser;
+            this.serializer = serializer;
+            this.request = request;
+            this.sendheaders = sendheaders;
         }
 
-        boolean compress = "true".equals(req.getParameter("compress"));
-
-        // nsprefix now defaults to true
-        boolean nsprefix = true;
-        if ("false".equals(req.getParameter("nsprefix"))) {
-            nsprefix = false;
+        public void run() {
+            try {
+                writeXMLDataToOutputStream();
+                pout.flush();
+                pout.close();
+            } catch (XmlPullParserException ex) {
+                throw new RuntimeException(ex);
+            } catch (IOException ex) {
+                throw new RuntimeException(ex);
+            }
         }
 
-        // Need to parse body into a DOM, and add the headers, then re-emit as XML
-        // of the form
+        // Generates an XML document with this structure
         // <resultset>
-        //   <body> ... </body>
+        //   <body> [PROXIED_XMLDOC] </body>
         //   <headers> ... </headers>
         // </resultset>
+        void writeXMLDataToOutputStream() throws XmlPullParserException, IOException {
+            //Run through XML PULL parser, to convert to UTF8, and
+            // wrap in <resultset> tag, plus optional headers 
 
-        StringBuffer xdata = new StringBuffer();
-        xdata.append("<resultset>\n");
-        xdata.append("<body>\n");
-        String xbody = body.replaceFirst("<[?]xml.*?[?]>","");
-        xdata.append(xbody);
-        xdata.append("</body>\n");
-        xdata.append(headers);
-        xdata.append("</resultset>\n");
+            // Start a standalone document;
+            //serializer.startDocument("UTF-8", Boolean.TRUE);
 
-        // generate inputstream from DOM
-        ByteArrayInputStream dis = new ByteArrayInputStream((xdata.toString()).getBytes("UTF-8"));
-        return dis;
+            serializer.startTag("", "resultset");
+            serializer.startTag("", "body");
+
+            parser.nextToken(); // read first token
+
+            while (parser.getEventType () != XmlPullParser.END_DOCUMENT) {
+                writeToken ( parser.getEventType () );
+                parser.nextToken ();
+            }
+
+            serializer.endTag("", "body");
+
+            //   <headers> ... </headers>
+            serializer.startTag("", "headers");
+
+            // Get headers
+            if (sendheaders == null || sendheaders.equals("true") ) {
+                Header[] hedz = request.getResponseHeaders();
+                for (int i = 0; i < hedz.length; i++) {
+                    String name = hedz[i].getName();
+                    if (LZHttpUtils.allowForward(name, null)) {
+                        serializer.startTag("", "header");                    
+
+                        serializer.attribute (null, "name", name);
+                        serializer.attribute (null, "value", hedz[i].getValue());
+                        serializer.endTag("", "header");                    
+                    }
+                }
+            }
+            serializer.endTag("", "headers");
+
+            serializer.endTag("", "resultset");
+            serializer.endDocument();
+        }
+
+        private void writeStartTag ()
+          throws XmlPullParserException, IOException {
+            if (!parser.getFeature (XmlPullParser.FEATURE_REPORT_NAMESPACE_ATTRIBUTES)) {
+                for (int i = parser.getNamespaceCount (parser.getDepth ()-1);
+                     i <= parser.getNamespaceCount (parser.getDepth ())-1; i++) {
+                    serializer.setPrefix
+                        (parser.getNamespacePrefix (i),
+                         parser.getNamespaceUri (i));
+                }
+            }
+            serializer.startTag(parser.getNamespace (), parser.getName ());
+        
+            for (int i = 0; i < parser.getAttributeCount (); i++) {
+                serializer.attribute
+                    (parser.getAttributeNamespace (i),
+                     parser.getAttributeName (i),
+                     parser.getAttributeValue (i));
+            }
+        }
+
+
+        private void writeToken (int eventType)
+          throws XmlPullParserException, IOException {
+            switch (eventType) {
+                
+              case XmlPullParser.START_TAG:
+                writeStartTag ();
+                break;
+                
+              case XmlPullParser.END_TAG:
+                serializer.endTag(parser.getNamespace (), parser.getName ());
+                break;
+                
+            case XmlPullParser.START_DOCUMENT:
+                //use Boolean.TRUE to make it standalone
+              //Boolean standalone = (Boolean) parser.getProperty(PROPERTY_XMLDECL_STANDALONE);
+              //serializer.startDocument(parser.getInputEncoding(), standalone);
+                break;
+
+              case XmlPullParser.END_DOCUMENT:
+              //serializer.endDocument();
+                break;
+
+              case XmlPullParser.IGNORABLE_WHITESPACE:
+                //comment it to remove ignorable whtespaces from XML infoset
+                String s = parser.getText ();
+                serializer.ignorableWhitespace (s);
+                break;
+                
+              case XmlPullParser.TEXT:
+                serializer.text (parser.getText ());
+                break;
+                
+              case XmlPullParser.ENTITY_REF:
+                serializer.entityRef (parser.getName ());
+                break;
+                
+              case XmlPullParser.CDSECT:
+                serializer.cdsect( parser.getText () );
+                break;
+                
+              case XmlPullParser.PROCESSING_INSTRUCTION:
+                // serializer.processingInstruction( parser.getText ());
+                break;
+                
+              case XmlPullParser.COMMENT:
+                //serializer.comment (parser.getText ());
+                break;
+                
+              case XmlPullParser.DOCDECL:
+                // serializer.docdecl (parser.getText ());
+                break;
+            }
+        }
+
+
     }
 
     /**

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/js2doc/JS2DocUtils.java
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/js2doc/JS2DocUtils.java	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/js2doc/JS2DocUtils.java	2007-11-05 23:35:46 UTC (rev 7140)
@@ -80,56 +80,7 @@
         }
     }
 
-    public static boolean validateAndCompare(Document test, String result, SchemaValidator validator) throws RuntimeException {
-    
-        boolean status = true;
-        
-        boolean savedWhitespace = XMLUnit.getIgnoreWhitespace();
-        
-        try {
-            XMLUnit.setIgnoreWhitespace(true);
-            
-            Document control = XMLUnit.buildControlDocument(result);
-            
-            Diff diff = new Diff(control, test);
-            
-            String testString = JS2DocUtils.xmlToString(test);
-            
-            boolean testValid = validator.validates(testString),
-                    expectValid = validator.validates(result);
 
-            if (diff.similar() == false || testValid == false || expectValid == false) {
-                System.out.println("identical: " + diff.identical());
-                System.out.println("test valid: " + testValid);
-                System.out.println("expect valid: " + expectValid);
-                System.out.println("output: " + testString);
-                System.out.println("expect: " + result);
-            }
-
-            status = status && validator.validates(testString);
-            status = status && validator.validates(result);
-            
-            // use 'similar' rather than 'identical' here so we can put a copyright comment and line endings
-            // in the expected result file.
-            status = status && diff.similar();            
-
-        } catch (org.xml.sax.SAXException exc) {
-            exc.printStackTrace();
-            status = false;
-        } catch (java.io.IOException exc) {
-            exc.printStackTrace();
-            status = false;
-        } catch (javax.xml.parsers.ParserConfigurationException exc) {
-            exc.printStackTrace();
-            status = false;
-        } finally {
-            if (XMLUnit.getIgnoreWhitespace() != savedWhitespace)
-                 XMLUnit.setIgnoreWhitespace(savedWhitespace);
-        }
-        
-        return status;
-    }
-
     static public void setXMLContent(org.w3c.dom.Element node, String content) {
 
         // Wrap the fragment in an arbitrary element
@@ -331,4 +282,4 @@
         }
     }
 
-}
\ No newline at end of file
+}

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/js2doc/JS2Doc_Test.java
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/js2doc/JS2Doc_Test.java	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/js2doc/JS2Doc_Test.java	2007-11-05 23:35:46 UTC (rev 7140)
@@ -22,14 +22,11 @@
 
 public class JS2Doc_Test extends XMLTestCase {
 
-    SchemaValidator validator;
-    
     public JS2Doc_Test (String name) {
         super(name);
     }
 
     public void setUp () {
-        validator = new SchemaValidator(System.getProperty("JS2DOC_RNG"));
     }
 
     public void testComments () {
@@ -741,22 +738,13 @@
                 
                 String testString = JS2DocUtils.xmlToString(test);
                 
-                boolean testValid = validator.validates(testString),
-                        expectValid = validator.validates(result);
-    
-                if (diff.identical() == false || testValid == false || expectValid == false) {
+                if (diff.identical() == false) {
                     System.out.println("identical: " + diff.identical());
-                    System.out.println("test valid: " + testValid);
-                    System.out.println("expect valid: " + expectValid);
                     System.out.println("input:  " + source);
                     System.out.println("output: " + testString);
                     System.out.println("expect: " + result);
                 }
 
-                assertTrue("JS2Doc.toXML(\"" + source + "\") valid", testValid);
-                
-                assertTrue("JS2Doc.toXML(\"" + result + "\") expect valid", expectValid);
-                
                 assertXMLIdentical(diff, true, "JS2Doc.toXML(\"" + source + "\")");
     
             } catch (org.xml.sax.SAXException exc) {
@@ -771,4 +759,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/js2doc/Main.java
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/js2doc/Main.java	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/js2doc/Main.java	2007-11-05 23:35:46 UTC (rev 7140)
@@ -248,10 +248,6 @@
             File expectFile = new File(expectName);
             String expect = FileUtils.readFileString(expectFile);
             
-            SchemaValidator validator = new SchemaValidator(schemaName);
-    
-            result = JS2DocUtils.validateAndCompare(test, expect, validator);
-            
         } catch (java.io.IOException exc) {
             exc.printStackTrace();
         }

Deleted: openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/js2doc/SchemaValidator.java

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/js2doc/Schema_Test.java
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/js2doc/Schema_Test.java	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/js2doc/Schema_Test.java	2007-11-05 23:35:46 UTC (rev 7140)
@@ -16,14 +16,11 @@
 
 public class Schema_Test extends XMLTestCase {
 
-    SchemaValidator validator;
-    
     public Schema_Test (String name) {
         super(name);
     }
 
     public void setUp () {
-        validator = new SchemaValidator(System.getProperty("JS2DOC_RNG"));
     }
 
     public void testSchema () {
@@ -64,9 +61,7 @@
             String result = (String) iter.next();
             assertTrue(result == "true" || result == "false");
             boolean shouldPass = (result == "true") ? true : false;
-            boolean testValid = validator.validates(source);
-            assertEquals(source, shouldPass, testValid);
         }            
     }   
 
-}
\ No newline at end of file
+}

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/js2doc/WholeFile_Test.java
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/js2doc/WholeFile_Test.java	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/js2doc/WholeFile_Test.java	2007-11-05 23:35:46 UTC (rev 7140)
@@ -21,15 +21,12 @@
 
 public class WholeFile_Test extends XMLTestCase {
 
-    SchemaValidator validator;
-    
     public WholeFile_Test (String name) {
         super(name);
         XMLUnit.setIgnoreWhitespace(true);
     }
 
     public void setUp () {
-        validator = new SchemaValidator(System.getProperty("JS2DOC_RNG"));
     }
 
     private class FilenameSuffixFilter implements FilenameFilter {
@@ -89,21 +86,12 @@
                 
                 String testString = JS2DocUtils.xmlToString(test);
                 
-                boolean testValid = validator.validates(testString),
-                        expectValid = validator.validates(result);
-    
-                if (diff.similar() == false || testValid == false || expectValid == false) {
+                if (diff.similar() == false ) {
                     System.out.println("identical: " + diff.identical());
-                    System.out.println("test valid: " + testValid);
-                    System.out.println("expect valid: " + expectValid);
                     System.out.println("output: " + testString);
                     System.out.println("expect: " + result);
                 }
 
-                assertTrue("JS2Doc.toXML(\"" + sourceFilename + "\") valid", testValid);
-                
-                assertTrue("JS2Doc.toXML(\"" + resultFile.getPath() + "\") expect valid", expectValid);
-                
                 // use 'similar' rather than 'identical' here so we can put a copyright comment and line endings
                 // in the expected result file.
                 assertXMLEqual(diff, true, "JS2Doc.toXML(\"" + sourceFilename + "\")");
@@ -121,4 +109,4 @@
         }
     }
 
-}
\ No newline at end of file
+}

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/sc/Actions.java
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/sc/Actions.java	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/sc/Actions.java	2007-11-05 23:35:46 UTC (rev 7140)
@@ -236,7 +236,7 @@
     public static Action EXTENDS                  = new Action("EXTENDS", (byte)0x69);
     public static Action DefineFunction2          = new Action("DefineFunction2", (byte)0x8e);
     public static Action TRY                      = new Action("TRY", (byte)0x8f);
-    public static Action THROW                    = new Action("THROW", (byte)0x2a);
+    public static Action THROW                    = new Action("THROW", (byte)0x2a, 1, 0);
 
     /*
      * Flash Lite 2

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/sc/Assembler.java
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/sc/Assembler.java	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/sc/Assembler.java	2007-11-05 23:35:46 UTC (rev 7140)
@@ -43,6 +43,12 @@
   private static byte[] backingStore;
   Hashtable constants;
 
+  public static class LabelReference {
+    int patchloc;
+    boolean relative;
+    boolean positive;
+  }
+
   public static class Label {
     Object name;
     int location;
@@ -69,9 +75,26 @@
       location = bytes.position();
       // Backpatch forward jumps
       for (Iterator i =  references.iterator(); i.hasNext(); ) {
-        int patchloc = ((Integer)i.next()).intValue();
-        int offset = location - patchloc - 2;
-        if (offset < MIN_OFFSET() || offset > MAX_OFFSET()) {
+        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;
+        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 (rangecheck && (offset < MIN_OFFSET() || offset > MAX_OFFSET())) {
           throw new CompilerException((this instanceof Block?"Block":"Label") + " " +
                                       name + ": jump offset " + offset + " too large");
         }
@@ -92,8 +115,16 @@
     }
 
     public void addReference(int patchloc) {
+      addReference(patchloc, true, true);
+    }
+
+    public void addReference(int patchloc, boolean relative, boolean positive) {
       assert (! isResolved()) : "adding reference to resolved label";
-      references.add(new Integer(patchloc));
+      LabelReference lr = new LabelReference();
+      lr.patchloc = patchloc;
+      lr.relative = relative;
+      lr.positive = positive;
+      references.add(lr);
     }
 
     public String toString() {
@@ -170,6 +201,56 @@
     return (Label)labels.get(name);
   }
 
+  public void resolveTarget(TargetInstruction target, Label[] labels) {
+    if (labels.length > 1) {
+
+      // Multiple labels indicate that we are doing label arithmetic,
+      // each pair is a difference of values, used to compute the
+      // size of a code block.  This is needed for the try instruction.
+      // At the moment, we only implement this for forward references,
+      // which solves the only case we care about with the try instruction.
+
+      assert labels.length % 2 == 0 : "multiple target labels must be in pairs";
+
+      // Emit the instruction and then get the list of addresses
+      // to backpatch.
+
+      int origloc = bytes.position();
+      target.writeBytes(bytes, constants);
+
+      for (int i=0; i<labels.length; i+=2) {
+        Label labelpos = labels[i];
+        Label labelneg = labels[i+1];
+
+        assert (labelpos.location == -1 && labelneg.location == -1) :
+          "target arithmetic using backward refs not implemented";
+
+        int targetoff = target.targetOffset(i/2);
+        int patchloc = (targetoff < 0 ? bytes.position() : origloc) + targetoff;
+
+        labelpos.addReference(patchloc, false, true);  // add absolute pos value
+        labelneg.addReference(patchloc, false, false); // add absolute neg value
+      }
+    } else if (labels[0].location == -1) {
+      // Target location isn't yet available.  Use a null
+      // offset, and add the address to be patched to this
+      // label's list of backpatch locations.
+      int origloc = bytes.position();
+      target.writeBytes(bytes, constants);
+
+      int targetoff = target.targetOffset(0);
+      int patchloc = (targetoff < 0 ? bytes.position() : origloc) + targetoff;
+      labels[0].addReference(patchloc);
+    } else {
+      // Target computation requires that we write the instruction first!
+      target.targetOffset = 0;
+      target.writeBytes(bytes, constants);
+      short offset = labels[0].computeOffset(bytes);
+      assert bytes.order() == ByteOrder.LITTLE_ENDIAN;
+      bytes.putShort(bytes.position() - 2, offset);
+    }
+  }
+
   public void emit(Instruction instr) {
     // Verify there is room for a maximal instruction (1<<16)
     if (! (bytes.remaining() > 1<<16)) {
@@ -199,23 +280,19 @@
       label.setLocation(bytes);
     } else if (instr instanceof TargetInstruction) {
       TargetInstruction target = (TargetInstruction)instr;
-      Label label = getLabel(target.getTarget(), instr instanceof BranchInstruction);
-      int loc = label.location;
-      if (loc == -1) {
-        // Target location isn't yet available.  Use a null
-        // offset, and add the address to be patched to this
-        // label's list of backpatch locations.
-        target.writeBytes(bytes, constants);
-        int patchloc = bytes.position() - 2;
-        label.addReference(patchloc);
-      } else {
-        // Target computation requires that we write the instruction first!
-        target.targetOffset = 0;
-        target.writeBytes(bytes, constants);
-        short offset = label.computeOffset(bytes);
-        assert bytes.order() == ByteOrder.LITTLE_ENDIAN;
-        bytes.putShort(bytes.position() - 2, offset);
-        }
+      Object targetval = target.getTarget();
+      Label[] labels;
+      if (targetval instanceof Object[]) {
+        Object[] vals = (Object[])targetval;
+        labels = new Label[vals.length];
+        for (int i=0; i<vals.length; i++)
+          labels[i] = getLabel(vals[i], instr instanceof BranchInstruction);
+      }
+      else {
+        labels = new Label[1];
+        labels[0] = getLabel(targetval, instr instanceof BranchInstruction);
+      }
+      resolveTarget(target, labels);
     } else {
       instr.writeBytes(bytes, constants);
     }

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/sc/CodeGenerator.java
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/sc/CodeGenerator.java	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/sc/CodeGenerator.java	2007-11-05 23:35:46 UTC (rev 7140)
@@ -453,11 +453,95 @@
   }
 
   public SimpleNode visitTryStatement(SimpleNode node, SimpleNode[] children) {
-    throw new CompilerImplementationError("cannot handle try statement " + node, node);
+    SimpleNode block = children[0];
+    int len = children.length;
+    assert len == 2 || len == 3;
+    SimpleNode catchNode = null;
+    SimpleNode finallyNode = null;
+    int flags = 0;
+
+    if (len == 2) {
+      // Could be catch or finally clause
+      if (children[1] instanceof ASTCatchClause) {
+        catchNode = children[1];
+      }
+      else {
+        finallyNode = children[1];
+      }
+    }
+    else {
+      catchNode = children[1];
+      finallyNode = children[2];
+    }
+
+    String catchVarName = "";
+
+    // For catch and finally, reach down to get
+    // the target node to visit.
+    //
+    if (catchNode != null) {
+      SimpleNode[] catchchildren = catchNode.getChildren();
+      SimpleNode id = catchchildren[0];
+      assert id instanceof ASTIdentifier;
+      catchVarName = ((ASTIdentifier)id).getName();
+      catchNode = catchchildren[1];
+      flags |= Instructions.TryInstruction.FLAGS_HAS_CATCH;
+    }
+    if (finallyNode != null) {
+      finallyNode = finallyNode.getChildren()[0];
+      flags |= Instructions.TryInstruction.FLAGS_HAS_FINALLY;
+    }
+
+    // Try statement code looks like this in the general case:
+    //
+    //       try size0, size1, size2, 'varname'
+    //     label0:
+    //       ...try-block...
+    //       branch label2:
+    //     label1:
+    //       ...catch-block...
+    //     label2:
+    //       ...finally-block...
+    //     label3:
+    //
+    // where sizeN is the size of the code block between labelN and labelN+1.
+    // either catch or finally blocks may be missing.  Whether or not
+    // they are missing, we push out all the labels, it just makes it
+    // easier to calculate the block sizes.
+
+    ArrayList code = new ArrayList();
+
+    // The first six args are 3 pairs of labels to represent the size of
+    // each code block, e.g. label1 - label0 => size0
+    Object[] tryargs = { new Integer(1), new Integer(0), // label1 - label0
+                         new Integer(2), new Integer(1), // label2 - label1
+                         new Integer(3), new Integer(2), // label3 - label2
+                         catchVarName, new Integer(flags)};
+    code.add(Instructions.TRY.make(tryargs));
+    code.add(new Integer(0));
+    code.add(block);
+    if (catchNode != null)  // if catch is missing, no need for branch.
+      code.add(Instructions.BRANCH.make(2));
+    code.add(new Integer(1));
+    if (catchNode != null)
+      code.add(catchNode);
+    code.add(new Integer(2));
+    if (finallyNode != null)
+      code.add(finallyNode);
+    code.add(new Integer(3));
+
+    translateControlStructure(node, code.toArray());
+                       
+    return node;
   }
 
   public SimpleNode visitThrowStatement(SimpleNode node, SimpleNode[] children) {
-    throw new CompilerImplementationError("cannot handle throw statement " + node, node);
+    assert children.length == 1 : "throw statement missing expression";
+    SimpleNode expr = children[0];
+
+    visitExpression(expr);
+    collector.emit(Instructions.THROW);
+    return node;
   }
 
   SimpleNode translateInclude(String userfname, String cpass) {
@@ -902,15 +986,27 @@
       return label;
     }
 
+    String[] lookupLabels(Object[] vals) {
+      String[] rets = new String[vals.length];
+      for (int i=0; i<vals.length; i++) {
+        rets[i] = lookupLabel(vals[i]);
+      }
+      return rets;
+    }
+
     Instruction resolveLocalLabel(Object instr) {
       if (instr instanceof Integer) {
         return Instructions.LABEL.make(lookupLabel(instr));
       }
       if (instr instanceof Instructions.TargetInstruction) {
         Instructions.TargetInstruction target = (Instructions.TargetInstruction)instr;
-        if (target.getTarget() instanceof Integer) {
-          return target.replaceTarget(lookupLabel(target.getTarget()));
+        Object targetval = target.getTarget();
+        if (targetval instanceof Object[]) {
+          return target.replaceTarget(lookupLabels((Object[])targetval));
         }
+        if (targetval instanceof Integer) {
+          return target.replaceTarget(lookupLabel(targetval));
+        }
       }
       return (Instruction)instr;
     }

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/sc/CommonGenerator.java
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/sc/CommonGenerator.java	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/sc/CommonGenerator.java	2007-11-05 23:35:46 UTC (rev 7140)
@@ -342,14 +342,14 @@
     if (props.isEmpty()) {
       instanceProperties = new ASTLiteral(null);
     } else {
-      instanceProperties = new ASTObjectLiteral(0);
+      instanceProperties = new ASTArrayLiteral(0);
       instanceProperties.setChildren((SimpleNode[])(props.toArray(new SimpleNode[0])));
     }
     SimpleNode classProperties;
     if (classProps.isEmpty()) {
       classProperties = new ASTLiteral(null);
     } else {
-      classProperties = new ASTObjectLiteral(0);
+      classProperties = new ASTArrayLiteral(0);
       classProperties.setChildren((SimpleNode[])(classProps.toArray(new SimpleNode[0])));
     }
 
@@ -399,7 +399,7 @@
         if (n instanceof ASTFunctionDeclaration) {
           SimpleNode[] c = n.getChildren();
           assert c.length == 3;
-          p.add(c[0]);
+          p.add(new ASTLiteral(((ASTIdentifier)c[0]).getName()));
           SimpleNode funexpr = new ASTFunctionExpression(0);
           funexpr.setBeginLocation(n.filename, n.beginLine, n.beginColumn);
           funexpr.setChildren(c);
@@ -409,7 +409,7 @@
           for (int j = 0, len = c.length; j < len; j++) {
             SimpleNode v = c[j];
             assert v instanceof ASTVariableDeclaration : v.getClass();
-            p.add(v.get(0));
+            p.add(new ASTLiteral(((ASTIdentifier)v.get(0)).getName()));
             if (v.getChildren().length > 1) {
               p.add(v.get(1));
             } else {

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/sc/InstructionCollector.java
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/sc/InstructionCollector.java	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/sc/InstructionCollector.java	2007-11-05 23:35:46 UTC (rev 7140)
@@ -28,7 +28,7 @@
  */
 
 /* J_LZ_COPYRIGHT_BEGIN *******************************************************
-* Copyright 2001-2004 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * J_LZ_COPYRIGHT_END *********************************************************/
 
@@ -93,6 +93,17 @@
     }
   }
 
+  // Rename labels uniquely
+  private Object uniqueLabel(Map labels, Object label)
+  {
+    Object newLabel = labels.get(label);
+    if (newLabel == null) {
+      newLabel = newLabel();
+      labels.put(label, newLabel);
+    }
+    return newLabel;
+  }
+
   public void appendInstructions(List instrsList) {
     // TODO [2003-03-06 ptw] Why not relabel all instructions? (I.e.,
     // move this to emit)
@@ -101,26 +112,12 @@
     for (int i = 0; i < instrs.length; i++) {
       Instruction instr = instrs[i];
       if (instr instanceof LABELInstruction) {
-        // Rename labels uniquely
-        Object label = ((LABELInstruction)instr).name;
-        Object newLabel;
-        if (labels.containsKey(label)) {
-          newLabel = labels.get(label);
-        } else {
-          newLabel = newLabel();
-          labels.put(label, newLabel);
-        }
+
+        Object newLabel = uniqueLabel(labels, ((LABELInstruction)instr).name);
         instr = Instructions.LABEL.make(newLabel);
       } else if (instr instanceof TargetInstruction) {
         TargetInstruction target = (TargetInstruction)instr;
-        Object label = target.getTarget();
-        Object newLabel;
-        if (labels.containsKey(label)) {
-          newLabel = labels.get(label);
-        } else {
-          newLabel = newLabel();
-          labels.put(label, newLabel);
-        }
+        Object newLabel = uniqueLabel(labels, target.getTarget());
         instr = target.replaceTarget(newLabel);
       }
       emit(instr);

Modified: openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/sc/Instructions.java
===================================================================
--- openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/sc/Instructions.java	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/WEB-INF/lps/server/src/org/openlaszlo/sc/Instructions.java	2007-11-05 23:35:46 UTC (rev 7140)
@@ -158,6 +158,8 @@
         inst = new DefineFunction2Instruction(op);
       } else if (op == Actions.WITH) {
         inst = new WITHInstruction(op);
+      } else if (op == Actions.TRY) {
+        inst = new TryInstruction(op);
       } else if (BranchInstruction.OPCODES.contains(op)) {
         inst = new BranchInstruction(op);
       } else {
@@ -492,6 +494,16 @@
     public int argsBytes() {
       return 2;
     }
+
+    // The offset of the target part of the instruction.
+    // If positive, it is relative from the beginning of the instruction,
+    // If negative, it is relative from the end.
+    // Default version has branch target as last two bytes
+
+    public int targetOffset(int whichTarget) {
+      return -2;
+    }
+
   }
 
 
@@ -545,7 +557,102 @@
     }
   }
 
+  public static class TryInstruction extends TargetInstruction {
 
+    // inherited targetOffset is ignored
+
+    short blockStart;
+    short catchStart;
+    short finallyStart;
+    short blockEnd;
+    public static int FLAGS_HAS_CATCH = 0x1;
+    public static int FLAGS_HAS_FINALLY = 0x2;
+
+    protected TryInstruction(Action op) {
+      this(op, null);
+    }
+    
+    protected TryInstruction(Action op, List args) {
+      this(op, args, (short)0, (short)0, (short)0, (short)0);
+    }
+
+    protected TryInstruction(Action op, List args, short blockStart, short catchStart, short finallyStart, short blockEnd) {
+      super(op, args);
+      assert op == Actions.TRY;
+      this.blockStart = blockStart;
+      this.catchStart = catchStart;
+      this.finallyStart = finallyStart;
+      this.blockEnd = blockEnd;
+    }
+
+    // The args are 6 labels, a variable name for the exception, and flags.
+    // The labels are three pairs - each pair represents label arithmetic,
+    // e.g. label1 - label0 to represent the size of a code block.
+
+    public TargetInstruction makeTargetInstruction(List args) {
+      return new TryInstruction(this.op, args);
+    }
+
+    // multiple target  by returning an array
+    public Object getTarget() {
+      Object[] result = new Object[6];
+      for (int i=0; i<6; i++)
+        result[i] = this.args.get(i);
+      return result;
+    }
+
+    public TargetInstruction replaceTarget(Object target) {
+      TargetInstruction replace = makeTargetInstruction(this.args);
+      Object[] targetarr = (Object[])target;
+      for (int i=0; i<6; i++)
+        replace.args.set(i, targetarr[i]);
+      return replace;
+    }
+
+    public void writeArgs(ByteBuffer bytes, Map pool) {
+      assert bytes.order() == ByteOrder.LITTLE_ENDIAN;
+      List args = this.args;
+      byte flags = (byte)((Integer)args.get(7)).intValue();
+      bytes.put(flags);
+      bytes.putShort(this.catchStart);
+      bytes.putShort(this.finallyStart);
+      bytes.putShort(this.blockEnd);
+      String varname = (String)args.get(6);
+      if (varname == null) varname = "";
+      try {
+        bytes.put(varname.getBytes("UTF-8"));
+      } catch (UnsupportedEncodingException e) {
+        assert false : "this can't happen";
+      }
+      bytes.put((byte)0);
+    }
+
+    public int argsBytes() {
+      List args = this.args;
+      String varname = (String)args.get(3);
+      if (varname == null) varname = "";
+      // size => 1 byte flag + three targets + string + null
+      int b = 1 + 6 + varname.length() + 1;
+      return b;
+    }
+
+    public int targetOffset(int whichTarget) {
+
+      // There are three targets to be filled,
+      // each is a two byte value, and they begin
+      // at byte 4 (after the flags)
+
+      return 4 + whichTarget*2;
+    }
+
+    public String toString() {
+      StringBuffer b = new StringBuffer();
+      b.append("try '" + (String)this.args.get(3) + "'");
+      return b.toString();
+    }
+
+  }
+
   public static class DefineFunctionInstruction extends TargetInstruction {
 
     protected DefineFunctionInstruction(Action op) {
@@ -1269,6 +1376,8 @@
 
   // Flash 7
   public static Instruction DefineFunction2          = Instruction.curry(Actions.DefineFunction2);
+  public static Instruction TRY                      = Instruction.curry(Actions.TRY);
+  public static Instruction THROW                    = Instruction.curry(Actions.THROW);
 
   // Flash Lite 2
   public static Instruction FSCommand2          = Instruction.curry(Actions.FSCommand2);

Modified: openlaszlo/branches/paperpie/demos/amazon/amazon.lzx
===================================================================
--- openlaszlo/branches/paperpie/demos/amazon/amazon.lzx	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/demos/amazon/amazon.lzx	2007-11-05 23:35:46 UTC (rev 7140)
@@ -535,9 +535,9 @@
 
         <method name="droppedInView" args="theView">
             <![CDATA[
-            // var absX = theView.getAttributeRelative( "x", canvas );
+            //var absX = theView.getAttributeRelative( "x", canvas );
             var mouseY = canvas.getMouse('y')-theView.getAttributeRelative('y',canvas);
-            var mouseX = canvas.getMouse('x')-theView.getAttributeRelative('x',canvas);
+            var mouseX = canvas.getMouse('x') - theView.getAttributeRelative('x',canvas);
             return theView.containsPt(mouseX, mouseY);
             ]]>
         </method>

Modified: openlaszlo/branches/paperpie/demos/amazon/classlib.lzx
===================================================================
--- openlaszlo/branches/paperpie/demos/amazon/classlib.lzx	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/demos/amazon/classlib.lzx	2007-11-05 23:35:46 UTC (rev 7140)
@@ -81,13 +81,17 @@
                                                -classroot.getAttributeRelative('x', canvas))
                                            -classroot.width );
                     classroot.panelDragger.apply();
+                    if(classroot.container.content.visible != true){
+                        classroot.container.content.setVisible(true);
+                    }
                 </method>
                 <method event="onmouseup">
-                    if ( !classroot.opened ) classroot.opened = 'true';
+                    if(classroot.opened != true) classroot.opened = 'true';
                     if ( classroot.width == parent.width ) {
                         // User has just closed the tab by dragging the panel
                         // manually.
-                        classroot.opened = 'false'
+                        classroot.opened = 'false';
+                        classroot.container.content.setVisible(false);
                     }
                     parent.tabButton.setResourceNumber(classroot.opened=='true'?4:1);
                     classroot.panelDragger.remove();
@@ -107,8 +111,12 @@
         </method>
 
         <method name="close">
+            <![CDATA[
             var a = this.animate("width",tab.width,333,false);
-            if (! this.__closeDel) this.__closeDel = new LzDelegate(this, 'hidecontent', a, 'onstop');
+            if (typeof this.__closeDel != 'undefined' && ! this.__closeDel){
+                this.__closeDel = new LzDelegate(this, 'hidecontent', a, 'onstop');
+            }
+            ]]>
         </method>
 
         <method name="hidecontent">

Modified: openlaszlo/branches/paperpie/demos/amazon/recommendation.lzx
===================================================================
--- openlaszlo/branches/paperpie/demos/amazon/recommendation.lzx	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/demos/amazon/recommendation.lzx	2007-11-05 23:35:46 UTC (rev 7140)
@@ -11,9 +11,9 @@
             ondblclick="this.parent.getInfo()">
             <attribute name="source" value="${this.data}"/>
             <method name="itemDropped" args="dpath">
-                if (dragsmall.droppedInView(cart.parent)) {
+                if (dragsmall.droppedInView(cart.parent.parent)) {
                     cart.addItem(dpath);
-                } else if (dragsmall.droppedInView(wish.parent)) {
+                } else if (dragsmall.droppedInView(wish.parent.parent)) {
                     wish.addItem(dpath);
                 }
             </method>
@@ -102,7 +102,7 @@
 
 </library>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2006 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
 <!-- @LZX_VERSION@                                                         -->

Modified: openlaszlo/branches/paperpie/docs/component-design/index.html
===================================================================
--- openlaszlo/branches/paperpie/docs/component-design/index.html	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/docs/component-design/index.html	2007-11-05 23:35:46 UTC (rev 7140)
@@ -1,17 +1,18 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2006 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
 <html>
 <link href="../../lps/includes/styles.css" type="text/css" rel="STYLESHEET">
 <head>
-<title>OpenLaszlo Component Design Guide</title>
+<title>OpenLaszlo Components Guide</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </head>
 
 <body bgcolor="#ffffff">
-<h1>Working with the OpenLaszlo Component Set</h1>
+<!-- change title to match reference and dguide. IORIO 22 oct 2007 -->
+<h1>OpenLaszlo Components Guide</h1>
 <h2>An Overview for User Interface Designers</h2>
 <ol start="0">
   <li><a href="#overview">Components Overview</a></li>

Modified: openlaszlo/branches/paperpie/docs/index.html
===================================================================
--- openlaszlo/branches/paperpie/docs/index.html	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/docs/index.html	2007-11-05 23:35:46 UTC (rev 7140)
@@ -1,7 +1,6 @@
 <!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
 <html>
 <head>
     <title>OpenLaszlo Documentation</title>
@@ -13,24 +12,31 @@
 <h1>OpenLaszlo Documentation</h1>
 
 <p>OpenLaszlo's developer documentation includes overviews, tutorials, and details on application development with Laszlo's technology. Follow the links below to find specific documentation. </p>
-
+<!-- change user's guides titles to match dguide and reference. IORIO 22 oct 2007 -->
+<!-- moved release notes to first item on list. IORIO 22 oct 2007 -->
 <ul>
 <li>
-<b><a href="./userindex.html">User's Guide</a></b><br />
+<b><a href="./userindex.html">User's Guides</a></b><br />
 Materials for adopters of the OpenLaszlo platform.
 
 <ul>
+
 <li>
+<b><a href="./release-notes.html">Release Notes</a></b><br />
+What's new in the release; changes to LZX syntax.
+</li>
+
+<li>
 <b><a href="./installation/index.html">Installation Instructions</a></b><br />
 How to install and upgrade the OpenLaszlo Server.
 </li>
 
 <li>
-<b><a href="./developers/index.html">Software Developer's Guide</a></b><br />
+<b><a href="./developers/index.html">OpenLaszlo Application Developer's Guide</a></b><br />
 In depth explanations of OpenLaszlo concepts. 
 </li>
 <li>
-<b><a href="./deployers/index.html">System Administrator's Guide to Deploying OpenLaszlo Applications</a></b><br />
+<b><a href="./deployers/index.html">OpenLaszlo System Administrator's Guide</a></b><br />
 How to make OpenLaszlo applications available on the web. 
 </li>
 
@@ -40,12 +46,7 @@
 </li>
 
 <li>
-<b><a href="./release-notes.html">Release Notes</a></b><br />
-What's new in the release; changes to LZX syntax.
-</li>
-
-<li>
-<b><a href="./component-design/index.html">Component Design</a></b><br />
+<b><a href="./component-design/index.html">OpenLaszlo Components Guide</a></b><br />
 An Overview of the OpenLaszlo Component Set for User Interface Designers.
 </li>
 

Modified: openlaszlo/branches/paperpie/docs/src/developers/classes-introductory.dbk
===================================================================
--- openlaszlo/branches/paperpie/docs/src/developers/classes-introductory.dbk	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/docs/src/developers/classes-introductory.dbk	2007-11-05 23:35:46 UTC (rev 7140)
@@ -46,19 +46,7 @@
    </programlisting>
 </example>
 
-<?example role="live-example"><title>Defining a new tag</title><programlisting role="lzx-embednew"><filename>introductory-classes-$1.lzx</filename><parameter/><code>
-&lt;canvas height="20"&gt;
-  &lt;class name="square" width="20" height="20" bgcolor="red"/&gt;
-  &lt;square/&gt;
-  &lt;square x="30"/&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas height="20"&gt;
-  &lt;class name="square" width="20" height="20" bgcolor="red"/&gt;
-  &lt;square/&gt;
-  &lt;square x="30"/&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/introductory-classes-$1.lzx></example?>
+<!-- remove commented out sample code here and others that was ignored by the build. IORIO 31 oct 2007 -->
 
 <para>This program is equivalent to the following program, but is shorter
 and easier to maintain.</para>
@@ -70,13 +58,6 @@
    <textobject><textdata fileref="programs/introductory-classes-$2.lzx"/></textobject> 
    </programlisting>
 </example>
-<?example role="live-example"><title>Without the class tag</title><programlisting role="lzx-embednew"><filename>introductory-classes-$2.lzx</filename><parameter/><code>&lt;canvas height="20"&gt;
-  &lt;view width="20" height="20" bgcolor="red"/&gt;
-  &lt;view x="30" width="20" height="20" bgcolor="red"/&gt;
-&lt;/canvas&gt;</code></programlisting><programlisting>&lt;canvas height="20"&gt;
-  &lt;view width="20" height="20" bgcolor="red"/&gt;
-  &lt;view x="30" width="20" height="20" bgcolor="red"/&gt;
-&lt;/canvas&gt;</programlisting><?lzx-edit programs/introductory-classes-$2.lzx></example?>
 
 <para>In addition, the class definition in the first program can be moved
 to a separate file, through the use of the <indexterm><primary>library</primary></indexterm><sgmltag class="element">&lt;library&gt;</sgmltag><remark role="fixme">[unknown tag]</remark>
@@ -92,19 +73,6 @@
    <textobject><textdata fileref="programs/introductory-classes-$3.lzx"/></textobject> 
    </programlisting>
 </example>
-<?example role="live-example"><title>Defining a tag in a library file</title><programlisting role="lzx-embednew"><filename>introductory-classes-$3.lzx</filename><parameter/><code>
-&lt;canvas height="20"&gt;
-  &lt;include href="square.lzx"/&gt;
-  &lt;square/&gt;
-  &lt;square x="30"/&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas height="20"&gt;
-  &lt;include href="square.lzx"/&gt;
-  &lt;square/&gt;
-  &lt;square x="30"/&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/introductory-classes-$3.lzx></example?>
 
 <informalexample role="live-example"><programlisting>
 &lt;library&gt;
@@ -123,16 +91,6 @@
    </programlisting>
 </example>
 
-<?example role="live-example"><title>Overriding a class attribute</title><programlisting role="lzx-embednew"><filename>introductory-classes-$5.lzx</filename><parameter/><code>&lt;canvas height="20"&gt;
-  &lt;include href="square.lzx"/&gt;
-  &lt;square/&gt;
-  &lt;square x="30" bgcolor="green"/&gt;
-&lt;/canvas&gt;</code></programlisting><programlisting>&lt;canvas height="20"&gt;
-  &lt;include href="square.lzx"/&gt;
-  &lt;square/&gt;
-  &lt;square x="30" bgcolor="green"/&gt;
-&lt;/canvas&gt;</programlisting><?lzx-edit programs/introductory-classes-$5.lzx></example?>
-
 <para>A class can introduce a new attribute with the <indexterm><primary>attribute</primary></indexterm><sgmltag class="element">&lt;attribute&gt;</sgmltag><remark role="fixme">[unknown tag]</remark>
 <!--unknown tag: attribute-->
  element:</para>
@@ -144,26 +102,11 @@
    </programlisting>
 </example>
 
-<?example role="live-example"><title>Defining an attribute</title><programlisting role="lzx-embednew"><filename>introductory-classes-$6.lzx</filename><parameter/><code>&lt;canvas height="20"&gt;
-  &lt;class name="square" width="${this.size}" height="${this.size}" bgcolor="red"&gt;
-    &lt;attribute name="size" value="20"/&gt;
-  &lt;/class&gt;
-  &lt;square/&gt;
-  &lt;square size="15" x="30"/&gt;
-  &lt;square size="10" x="50"/&gt;
-&lt;/canvas&gt;</code></programlisting><programlisting>&lt;canvas height="20"&gt;
-  &lt;class name="square" width="${this.size}" height="${this.size}" bgcolor="red"&gt;
-    &lt;attribute name="size" value="20"/&gt;
-  &lt;/class&gt;
-  &lt;square/&gt;
-  &lt;square size="15" x="30"/&gt;
-  &lt;square size="10" x="50"/&gt;
-&lt;/canvas&gt;</programlisting><?lzx-edit programs/introductory-classes-$6.lzx></example?>
-
+<!-- fix LPP-4923: replace ulink with xref to fix broken link. IORIO 31 oct 2007 -->
 <para>For more information about attributes and class definitions, see
 the <indexterm><primary>attribute</primary></indexterm><sgmltag class="element">&lt;attribute&gt;</sgmltag><remark role="fixme">[unknown tag]</remark>
 <!--unknown tag: attribute-->
- tag and the <ulink url="../guide/classes-tutorial.html" type="laszlo-dguide">Class tutorial</ulink>.</para>
+ tag and <xref linkend="classes-tutorial" />.</para>
 
 <para/></section><section><title>Children</title>
 <para>If a class definition contains children, these children are copied
@@ -176,24 +119,6 @@
    </programlisting>
 </example>
 
-<?example role="live-example"><title>Class children</title><programlisting role="lzx-embednew"><filename>introductory-classes-$7.lzx</filename><parameter/><code>
-&lt;canvas height="20"&gt;
-  &lt;class name="myframe" width="20" height="20" bgcolor="red"&gt;
-    &lt;view x="2" y="2" width="16" height="16" bgcolor="blue"/&gt;
-  &lt;/class&gt;
-  &lt;myframe/&gt;
-  &lt;myframe x="30"/&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas height="20"&gt;
-  &lt;class name="myframe" width="20" height="20" bgcolor="red"&gt;
-    &lt;view x="2" y="2" width="16" height="16" bgcolor="blue"/&gt;
-  &lt;/class&gt;
-  &lt;myframe/&gt;
-  &lt;myframe x="30"/&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/introductory-classes-$7.lzx></example?>
-
 <example role="live-example">
    <title>Using attributes and class children together</title>
    <programlisting language="lzx">
@@ -201,29 +126,6 @@
    </programlisting>
 </example>
 
-<?example role="live-example" id="class-1"><title>Using attributes and class children together</title><programlisting role="lzx-embednew"><filename>class-1.lzx</filename><parameter/><code>
-&lt;canvas height="40"&gt;
-  &lt;class name="myframe" extends="view"&gt;
-    &lt;attribute name="bgcolor" value="red"/&gt;
-    &lt;view x="5" y="5" width="${parent.width-10}" 
-          height="${parent.height-10}" 
-          bgcolor="blue"/&gt;
-  &lt;/class&gt;
-  
-  &lt;myframe width="40" height="40"/&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas height="40"&gt;
-  &lt;class name="myframe" extends="view"<co id="N10086"/>&gt;
-    &lt;attribute name="bgcolor" value="red"/&gt;
-    &lt;view x="5" y="5" width="${parent.width-10}" 
-          height="${parent.height-10}" 
-          bgcolor="blue"/&gt;
-  &lt;/class&gt;
-  
-  &lt;myframe width="40" height="40"/&gt;<co id="N10090"/>
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/class-1.lzx></example?>
 <calloutlist><callout arearefs="N10086"><para>
     The <indexterm><primary>extends</primary></indexterm><sgmltag class="attribute">extends</sgmltag> is optional here.  The default base class is <indexterm><primary>LzView</primary></indexterm><classname>LzView</classname>.</para></callout><callout arearefs="N10090"><para>
     Create an instance of <indexterm><primary>myframe</primary></indexterm><classname>myframe</classname>.</para></callout></calloutlist>
@@ -253,16 +155,6 @@
    </programlisting>
 </example>
 
-<?example role="live-example"><title>Built-in text classes</title><programlisting role="lzx-embednew"><filename>introductory-classes-$9.lzx</filename><parameter/><code>
-&lt;canvas height="50" layout="y"&gt;
-  &lt;inputtext&gt;plain text&lt;/inputtext&gt;
-  &lt;text&gt;&lt;i&gt;styled&lt;/i&gt; text&lt;/text&gt;
-&lt;/canvas&gt;</code></programlisting><programlisting>
-&lt;canvas height="50" layout="y"&gt;
-  &lt;inputtext&gt;plain text&lt;/inputtext&gt;
-  &lt;text&gt;&lt;i&gt;styled&lt;/i&gt; text&lt;/text&gt;
-&lt;/canvas&gt;</programlisting><?lzx-edit programs/introductory-classes-$9.lzx></example?>
-
 <para>The <indexterm><primary>text</primary></indexterm><sgmltag class="element">&lt;text&gt;</sgmltag><remark role="fixme">[unknown tag]</remark>
 <!--unknown tag: text-->
  may contain character text,
@@ -287,21 +179,6 @@
    <textobject><textdata fileref="programs/introductory-classes-$10.lzx"/></textobject> 
    </programlisting>
 </example>
-<?example role="live-example"><title>Extending the built-in text classes</title><programlisting role="lzx-embednew"><filename>introductory-classes-$10.lzx</filename><parameter/><code>
-&lt;canvas height="50" layout="y"&gt;
-  &lt;class name="mytext" extends="text"/&gt;
-  &lt;class name="myinputtext" extends="inputtext"/&gt;
-  &lt;myinputtext&gt;plain text&lt;/myinputtext&gt;
-  &lt;mytext&gt;&lt;i&gt;styled&lt;/i&gt; text&lt;/mytext&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas height="50" layout="y"&gt;
-  &lt;class name="mytext" extends="text"/&gt;
-  &lt;class name="myinputtext" extends="inputtext"/&gt;
-  &lt;myinputtext&gt;plain text&lt;/myinputtext&gt;
-  &lt;mytext&gt;&lt;i&gt;styled&lt;/i&gt; text&lt;/mytext&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/introductory-classes-$10.lzx></example?>
 
 <para>A tag may also contain text if it defines an attribute named
 <indexterm><primary>text</primary></indexterm><sgmltag class="attribute">text</sgmltag> with a value of <literal>text</literal> (for
@@ -320,33 +197,6 @@
    <textobject><textdata fileref="programs/introductory-classes-$11.lzx"/></textobject> 
    </programlisting>
 </example>
-<?example role="live-example"><title>Defining new text classes</title><programlisting role="lzx-embednew"><filename>introductory-classes-$11.lzx</filename><parameter/><code>
-&lt;canvas height="50" layout="y"&gt;
-  &lt;class name="mytext"&gt;
-    &lt;attribute name="text" type="html"/&gt;
-    &lt;text text="${parent.text}"/&gt;
-  &lt;/class&gt;
-  &lt;class name="myinputtext"&gt;
-    &lt;attribute name="text" type="html"/&gt;
-    &lt;inputtext text="${parent.text}"/&gt;
-  &lt;/class&gt;
-  &lt;mytext&gt;&lt;i&gt;styled&lt;/i&gt; text&lt;/mytext&gt;
-  &lt;myinputtext&gt;plain text&lt;/myinputtext&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas height="50" layout="y"&gt;
-  &lt;class name="mytext"&gt;
-    &lt;attribute name="text" type="html"/&gt;
-    &lt;text text="${parent.text}"/&gt;
-  &lt;/class&gt;
-  &lt;class name="myinputtext"&gt;
-    &lt;attribute name="text" type="html"/&gt;
-    &lt;inputtext text="${parent.text}"/&gt;
-  &lt;/class&gt;
-  &lt;mytext&gt;&lt;i&gt;styled&lt;/i&gt; text&lt;/mytext&gt;
-  &lt;myinputtext&gt;plain text&lt;/myinputtext&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/introductory-classes-$11.lzx></example?>
 
 <para/></section><section id="introductory-classes.placement"><title>Placement</title>
 
@@ -362,36 +212,6 @@
    </programlisting>
 </example>
 
-<?example role="live-example" id="class-2"><title>Default placement of children in a class</title><programlisting role="lzx-embednew"><filename>class-2.lzx</filename><parameter/><code>
-&lt;canvas height="50"&gt;
-  &lt;class name="myframe" extends="view"&gt;
-    &lt;attribute name="bgcolor" value="red"/&gt;
-    &lt;view x="5" y="5" width="${parent.width-10}"
-          height="${parent.height-10}"
-          bgcolor="#FFFFCC" /&gt;
-  &lt;/class&gt;
-  
-  &lt;!-- Create an instance of myframe with text inside it--&gt;
-  &lt;myframe width="220" height="20"&gt;
-    &lt;text&gt;This is some text&lt;/text&gt;
-  &lt;/myframe&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas height="50"&gt;
-  &lt;class name="myframe" extends="view"&gt;
-    &lt;attribute name="bgcolor" value="red"/&gt;
-    &lt;view x="5" y="5" width="${parent.width-10}"
-          height="${parent.height-10}"
-          bgcolor="#FFFFCC" /&gt;
-  &lt;/class&gt;
-  
-  &lt;!-- Create an instance of myframe with text inside it--&gt;
-  &lt;myframe width="220" height="20"&gt;
-    <emphasis role="b">&lt;text&gt;This is some text&lt;/text&gt;</emphasis>
-  &lt;/myframe&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/class-2.lzx></example?>
-
 <para>This behavior can be changed using the
 <indexterm><primary>node.defaultplacement</primary></indexterm><sgmltag class="attribute">node.defaultplacement</sgmltag> attribute or the
 <indexterm><primary><literal>LzNode.determinePlacement()</literal></primary></indexterm><methodname>LzNode.determinePlacement()</methodname> method. Using
@@ -410,38 +230,6 @@
    <textobject><textdata fileref="programs/class-3.lzx"/></textobject> 
    </programlisting>
 </example>
-
-<?example role="live-example" id="class-3"><title>Using placement within a class</title><programlisting role="lzx-embednew"><filename>class-3.lzx</filename><parameter/><code>
-&lt;canvas height="50"&gt;
-  &lt;class name="myframe" extends="view"&gt;
-    &lt;attribute name="bgcolor" value="red"/&gt;
-    &lt;attribute name="defaultplacement" value="'insideview'"/&gt;
-    &lt;view x="5" y="5" width="${parent.width-10}" name='insideview'
-          height="${parent.height-10}" 
-          bgcolor="#FFFFCC"/&gt;
-  &lt;/class&gt;
-  
-  &lt;!-- Create an instance of myframe with text inside it--&gt;
-  &lt;myframe width="220" height="50"&gt;
-    &lt;text&gt;This is some text&lt;/text&gt;
-  &lt;/myframe&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas height="50"&gt;
-  &lt;class name="myframe" extends="view"&gt;
-    &lt;attribute name="bgcolor" value="red"/&gt;
-    <emphasis role="em">&lt;attribute name="defaultplacement" value="'insideview'"/&gt;</emphasis>
-    &lt;view x="5" y="5" width="${parent.width-10}" <emphasis role="em">name='insideview'</emphasis>
-          height="${parent.height-10}" 
-          bgcolor="#FFFFCC"/&gt;
-  &lt;/class&gt;
-  
-  &lt;!-- Create an instance of myframe with text inside it--&gt;
-  &lt;myframe width="220" height="50"&gt;
-    &lt;text&gt;This is some text&lt;/text&gt;
-  &lt;/myframe&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/class-3.lzx></example?>  
 <para/></section></section><section><title>Constraints in class definitions</title>
 <para>
 Constraints are a general mechanism for relating the value of one attribute to that of another, as explained in <xref linkend="constraints"/>.
@@ -554,40 +342,6 @@
    <textobject><textdata fileref="programs/introductory-classes-$17.lzx"/></textobject> 
    </programlisting>
 </example>
-<?example role="live-example"><title>accessing views by name</title><programlisting role="lzx-embednew"><filename>introductory-classes-$17.lzx</filename><parameter/><code>
-&lt;canvas debug="true"&gt;
-  &lt;script&gt;
-    var foo = new LzView(canvas, {width: 50, height: 50, 
-                                  x: 50, y: 100,
-                                  bgcolor: 0,
-                                  name: "myview"});
-  &lt;/script&gt;
-  
-  &lt;button&gt;Make window red
-    &lt;handler name="onclick"&gt;
-      var nameOfView = "myview";
-      canvas[nameOfView].setAttribute('bgcolor', 0xff0000);
-    &lt;/handler&gt;
-  &lt;/button&gt;
-&lt;/canvas&gt; 
-</code></programlisting><programlisting>
-&lt;canvas debug="true"&gt;
-  &lt;script&gt;
-    var foo = new LzView(canvas, {width: 50, height: 50, 
-                                  x: 50, y: 100,
-                                  bgcolor: 0,
-                                  name: "myview"});
-  &lt;/script&gt;
-  
-  &lt;button&gt;Make window red
-    &lt;handler name="onclick"&gt;
-      var nameOfView = "myview";
-      canvas[nameOfView].setAttribute('bgcolor', 0xff0000);
-    &lt;/handler&gt;
-  &lt;/button&gt;
-&lt;/canvas&gt; 
-</programlisting><?lzx-edit programs/introductory-classes-$17.lzx></example?>
-
 <para/></section></section><section><title>A Prototype-based language</title>
 
 <para>

Modified: openlaszlo/branches/paperpie/docs/src/developers/classes-powerprogramming.dbk
===================================================================
--- openlaszlo/branches/paperpie/docs/src/developers/classes-powerprogramming.dbk	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/docs/src/developers/classes-powerprogramming.dbk	2007-11-05 23:35:46 UTC (rev 7140)
@@ -54,48 +54,8 @@
    <textobject><textdata fileref="programs/class-inheritance-$1.lzx"/></textobject> 
    </programlisting>
 </example>
-<?example role="live-example"><title>Inheritance chain</title><programlisting role="lzx-embednew"><filename>class-inheritance-$1.lzx</filename><parameter/><code>
-&lt;canvas debug="true" height="125"&gt;
-  &lt;debug x="80" y="5" width="170" height="112"/&gt;
+<!-- remove this and other commented out code which the build ignores. IORIO 31 oct 2007 -->
 
-  &lt;class name="top"&gt;
-    &lt;attribute name="myfoo" value="bar" type="string"/&gt;
-  &lt;/class&gt;
-  
-  &lt;class name="middle" extends="top"&gt;
-    &lt;method name="doit"&gt;
-      Debug.write("myfoo is " + this.myfoo);
-    &lt;/method&gt;
-  &lt;/class&gt;
-  
-  &lt;class name="bottom" extends="middle"&gt;
-    &lt;button text="clickme" onclick="parent.doit()"/&gt;
-  &lt;/class&gt;
-  
-  &lt;bottom/&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas debug="true" height="125"&gt;
-  &lt;debug x="80" y="5" width="170" height="112"/&gt;
-
-  &lt;class name="top"&gt;
-    &lt;attribute name="myfoo" value="bar" type="string"/&gt;
-  &lt;/class&gt;
-  
-  &lt;class name="middle" extends="top"&gt;
-    &lt;method name="doit"&gt;
-      Debug.write("myfoo is " + this.myfoo);
-    &lt;/method&gt;
-  &lt;/class&gt;
-  
-  &lt;class name="bottom" extends="middle"&gt;
-    &lt;button text="clickme" onclick="parent.doit()"/&gt;
-  &lt;/class&gt;
-  
-  &lt;bottom/&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/class-inheritance-$1.lzx></example?>
-
 <para>Class definitions can include default values for attributes. For example, a class that <emphasis role="i">extends</emphasis> view can have default
 <indexterm><primary>width</primary></indexterm><sgmltag class="attribute">width</sgmltag> and <indexterm><primary>height</primary></indexterm><sgmltag class="attribute">height</sgmltag>
 attributes:</para>
@@ -138,50 +98,8 @@
    <textobject><textdata fileref="programs/class-inheritance-$3.lzx"/></textobject> 
    </programlisting>
 </example>
-<?example role="live-example"><title>Inheriting Properties</title><programlisting role="lzx-embednew"><filename>class-inheritance-$3.lzx</filename><parameter/><code>
-&lt;canvas height="100"&gt;
-  &lt;!-- create a simplelayout so embedded views are laid out  --&gt;
-  &lt;!-- on top of each other.                                 --&gt;
-  &lt;class name="class1" layout="class: simplelayout; spacing: 2"&gt;
-    &lt;attribute name="label" value="class1 label" type="string"/&gt;
-    &lt;text&gt;from class1&lt;/text&gt;
-    &lt;button text="${classroot.label}"/&gt;
-  &lt;/class&gt;
 
-  &lt;!-- overrides class1's label; inherits text and button --&gt;
-  &lt;class name="class2" extends="class1" label="class2 label"&gt;
-    &lt;text&gt;from class2&lt;/text&gt;
-  &lt;/class&gt;
 
-  &lt;!-- inherit class1's text and button; inherit class2's text --&gt;
-  &lt;class name="class3" extends="class2"&gt;
-    &lt;text&gt;from class3&lt;/text&gt;
-  &lt;/class&gt;
-  &lt;class3/&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas height="100"&gt;
-  &lt;!-- create a simplelayout so embedded views are laid out  --&gt;
-  &lt;!-- on top of each other.                                 --&gt;
-  &lt;class name="class1" layout="class: simplelayout; spacing: 2"&gt;
-    &lt;attribute name="label" value="class1 label" type="string"/&gt;
-    &lt;text&gt;from class1&lt;/text&gt;
-    &lt;button text="${classroot.label}"/&gt;
-  &lt;/class&gt;
-
-  &lt;!-- overrides class1's label; inherits text and button --&gt;
-  &lt;class name="class2" extends="class1" label="class2 label"&gt;
-    &lt;text&gt;from class2&lt;/text&gt;
-  &lt;/class&gt;
-
-  &lt;!-- inherit class1's text and button; inherit class2's text --&gt;
-  &lt;class name="class3" extends="class2"&gt;
-    &lt;text&gt;from class3&lt;/text&gt;
-  &lt;/class&gt;
-  &lt;class3/&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/class-inheritance-$3.lzx></example?>
-
 <para>You can use the <literal>super</literal> keyword to invoke a superclass's
 method. The <literal>super</literal> keyword is useful in instances where you want to
 extend the superclass's method without rewriting the same logic. A
@@ -194,47 +112,6 @@
    <textobject><textdata fileref="programs/class-inheritance-$4.lzx"/></textobject> 
    </programlisting>
 </example>
-<?example role="live-example"><title>The super keyword</title><programlisting role="lzx-embednew"><filename>class-inheritance-$4.lzx</filename><parameter/><code>
-&lt;canvas debug="true" height="140"&gt;
-  &lt;debug x="60"/&gt;
-
-  &lt;class name="foo"&gt;
-    &lt;method name="talk"&gt;
-      Debug.write("hello");
-    &lt;/method&gt;
-    &lt;button text="click" onclick="parent.talk()"/&gt;
-  &lt;/class&gt;
-
-  &lt;class name="bar" extends="foo"&gt;
-    &lt;method name="talk"&gt;
-      super.talk();
-      Debug.write("goodbye");
-    &lt;/method&gt;
-  &lt;/class&gt;
-
-  &lt;bar/&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas debug="true" height="140"&gt;
-  &lt;debug x="60"/&gt;
-
-  &lt;class name="foo"&gt;
-    &lt;method name="talk"&gt;
-      Debug.write("hello");
-    &lt;/method&gt;
-    &lt;button text="click" onclick="parent.talk()"/&gt;
-  &lt;/class&gt;
-
-  &lt;class name="bar" extends="foo"&gt;
-    &lt;method name="talk"&gt;
-      super.talk();
-      Debug.write("goodbye");
-    &lt;/method&gt;
-  &lt;/class&gt;
-
-  &lt;bar/&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/class-inheritance-$4.lzx></example?>
 <para/><section><title>Handlers cannot be overridden</title>
 <para>
 In order to override the behavior of an event handler, you would have the handler call a method, and then override the method in the subclass or instance. For example, let's say that you wanted to write a handler for the <literal>onclick</literal> event that you could override in an instance. In your class definition, you would use this syntax:</para>
@@ -277,57 +154,6 @@
    <textobject><textdata fileref="programs/class-inheritance-$6.lzx"/></textobject> 
    </programlisting>
 </example>
-<?example role="live-example"><title>Classroot example</title><programlisting role="lzx-embednew"><filename>class-inheritance-$6.lzx</filename><parameter/><code>
-&lt;canvas debug="true" height="160"&gt;
-  &lt;debug x="155" y="10"/&gt;
-    
-  &lt;!-- class deep --&gt;
-  &lt;class name="deep"&gt;
-    &lt;attribute name="mytext" value="hello, world" type="string"/&gt;
-    
-    &lt;view bgcolor="red" width="150" height="150"&gt;
-      &lt;view bgcolor="green" width="75%" height="75%"&gt;
-        &lt;button text="clickme" width="75%" height="75%"&gt;
-          &lt;!-- classroot is a convenient way to access mytext --&gt;
-          &lt;handler name="onclick"&gt;
-            Debug.write("classroot.mytext: " + classroot.mytext);
-            Debug.write("parent.parent.parent.mytext: " + 
-                        parent.parent.parent.mytext);
-          &lt;/handler&gt;
-        &lt;/button&gt;
-      &lt;/view&gt;
-    &lt;/view&gt;
-  &lt;/class&gt;
-  
-  &lt;!-- instance of class deep --&gt;
-  &lt;deep/&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas debug="true" height="160"&gt;
-  &lt;debug x="155" y="10"/&gt;
-    
-  &lt;!-- class deep --&gt;
-  &lt;class name="deep"&gt;
-    &lt;attribute name="mytext" value="hello, world" type="string"/&gt;
-    
-    &lt;view bgcolor="red" width="150" height="150"&gt;
-      &lt;view bgcolor="green" width="75%" height="75%"&gt;
-        &lt;button text="clickme" width="75%" height="75%"&gt;
-          &lt;!-- classroot is a convenient way to access mytext --&gt;
-          &lt;handler name="onclick"&gt;
-            Debug.write("classroot.mytext: " + classroot.mytext);
-            Debug.write("parent.parent.parent.mytext: " + 
-                        parent.parent.parent.mytext);
-          &lt;/handler&gt;
-        &lt;/button&gt;
-      &lt;/view&gt;
-    &lt;/view&gt;
-  &lt;/class&gt;
-  
-  &lt;!-- instance of class deep --&gt;
-  &lt;deep/&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/class-inheritance-$6.lzx></example?>
 
 <para>Be careful when using <literal>classroot</literal> from the root of the
 class. If there is no surrounding class, <literal>classroot</literal> will
@@ -343,71 +169,6 @@
    <textobject><textdata fileref="programs/class-inheritance-$7.lzx"/></textobject> 
    </programlisting>
 </example>
-<?example role="live-example"><title>Referring to outer class's root using classroot</title><programlisting role="lzx-embednew"><filename>class-inheritance-$7.lzx</filename><parameter/><code>
-&lt;canvas debug="true" height="200"&gt;
-  &lt;debug height="175"/&gt;
-  
-  &lt;class name="foo"&gt;
-    &lt;method name="doit"&gt;
-      Debug.write("foo: this is [" + this + "]");
-      Debug.write("foo: classroot is [" + classroot + "]");
-      Debug.write("foo: classroot.classroot is [" + classroot.classroot + "]");
-    &lt;/method&gt;
-  &lt;/class&gt;
-  
-  &lt;!-- boo contains a foo --&gt;
-  &lt;class name="boo"&gt;
-    &lt;foo name="myfoo"/&gt;
-  &lt;/class&gt;
-  
-  &lt;!-- goo contains a boo --&gt;
-  &lt;class name="goo"&gt;
-    &lt;boo name="myboo"/&gt;
-    &lt;handler name="oninit"&gt;
-      myboo.myfoo.doit();
-      Debug.write("-----");
-      Debug.write("goo: this is [" + this + "]");
-      // warning will be displayed -- there is no classroot
-      Debug.write("goo: classroot is [" + classroot + "]");
-    &lt;/handler&gt;
-  &lt;/class&gt;
-  
-  &lt;!-- Make an instance of goo --&gt;
-  &lt;goo name="mygoo"/&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas debug="true" height="200"&gt;
-  &lt;debug height="175"/&gt;
-  
-  &lt;class name="foo"&gt;
-    &lt;method name="doit"&gt;
-      Debug.write("foo: this is [" + this + "]");
-      Debug.write("foo: classroot is [" + classroot + "]");
-      Debug.write("foo: classroot.classroot is [" + classroot.classroot + "]");
-    &lt;/method&gt;
-  &lt;/class&gt;
-  
-  &lt;!-- boo contains a foo --&gt;
-  &lt;class name="boo"&gt;
-    &lt;foo name="myfoo"/&gt;
-  &lt;/class&gt;
-  
-  &lt;!-- goo contains a boo --&gt;
-  &lt;class name="goo"&gt;
-    &lt;boo name="myboo"/&gt;
-    &lt;handler name="oninit"&gt;
-      myboo.myfoo.doit();
-      Debug.write("-----");
-      Debug.write("goo: this is [" + this + "]");
-      // warning will be displayed -- there is no classroot
-      Debug.write("goo: classroot is [" + classroot + "]");
-    &lt;/handler&gt;
-  &lt;/class&gt;
-  
-  &lt;!-- Make an instance of goo --&gt;
-  &lt;goo name="mygoo"/&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/class-inheritance-$7.lzx></example?>
 <para>
 At the risk of belaboring the topic, here's one more example that demonstrates that top level instances of a class have no defined classroot. Notice that even though "bar" is a child of "foo", it does not have a defined classroot, because it is a toplevel instance of the bar class. </para>
 
@@ -417,66 +178,6 @@
    <textobject><textdata fileref="programs/class-inheritance-$8.lzx"/></textobject> 
    </programlisting>
 </example>
-<?example role="live-example"><title>classroots and toplevel instances</title><programlisting role="lzx-embednew"><filename>class-inheritance-$8.lzx</filename><parameter/><code>
-&lt;canvas debug="true"&gt;
-&lt;class name="myclass" height="40" bgcolor="blue"&gt;
-  &lt;attribute name="button_label" type="text" value="button"/&gt;
-  &lt;handler name="onclick"&gt;
-    this.handleclick()
-  &lt;/handler&gt;
-
-  &lt;method name="handleclick"&gt;
-    Debug.write("this = " + this + "and classroot is" + classroot);
-  &lt;/method&gt;
-  &lt;button name="b1" height="30" text="${parent.button_label}"
-onclick="Debug.write('classroot of this button is: ' + classroot); parent.handleclick()" /&gt;
-&lt;/class&gt;
-
-&lt;class name="another_class" extends="myclass"/&gt;
-
-&lt;!-- foo and bar views are top-level instances, so their classroots are null.
-== The buttons are children of the foo and bar views, respectively, so ==
-== their classroots are defined. --&gt;
-
-&lt;myclass id="foo"&gt;
-  &lt;another_class id="bar" bgcolor="red" button_label ="another button" y="25"&gt;
-     &lt;method name="handleclick"&gt;
-       Debug.write("this = " + this + "and classroot is " + classroot);
-     &lt;/method&gt;
- &lt;/another_class&gt;
-&lt;/myclass&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas debug="true"&gt;
-&lt;class name="myclass" height="40" bgcolor="blue"&gt;
-  &lt;attribute name="button_label" type="text" value="button"/&gt;
-  &lt;handler name="onclick"&gt;
-    this.handleclick()
-  &lt;/handler&gt;
-
-  &lt;method name="handleclick"&gt;
-    Debug.write("this = " + this + "and classroot is" + classroot);
-  &lt;/method&gt;
-  &lt;button name="b1" height="30" text="${parent.button_label}"
-onclick="Debug.write('classroot of this button is: ' + classroot); parent.handleclick()" /&gt;
-&lt;/class&gt;
-
-&lt;class name="another_class" extends="myclass"/&gt;
-
-&lt;!-- foo and bar views are top-level instances, so their classroots are null.
-== The buttons are children of the foo and bar views, respectively, so ==
-== their classroots are defined. --&gt;
-
-&lt;myclass id="foo"&gt;
-  &lt;another_class id="bar" bgcolor="red" button_label ="another button" y="25"&gt;
-     &lt;method name="handleclick"&gt;
-       Debug.write("this = " + this + "and classroot is " + classroot);
-     &lt;/method&gt;
- &lt;/another_class&gt;
-&lt;/myclass&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/class-inheritance-$8.lzx></example?>
-
 <para/><section><title>Classroot not available in &lt;state&gt;</title>
 <para>
 The <indexterm><primary>state</primary></indexterm><sgmltag class="element">&lt;state&gt;</sgmltag><remark role="fixme">[unknown tag]</remark>
@@ -523,21 +224,6 @@
    <textobject><textdata fileref="programs/class-inheritance-$10.lzx"/></textobject> 
    </programlisting>
 </example>
-<?example role="live-example"><title>Extending text classes</title><programlisting role="lzx-embednew"><filename>class-inheritance-$10.lzx</filename><parameter/><code>
-&lt;canvas height="50" layout="axis: y"&gt;
-  &lt;class name="mytext" extends="text"/&gt;
-  &lt;class name="myinputtext" extends="inputtext"/&gt;
-  &lt;myinputtext&gt;plain text&lt;/myinputtext&gt;
-  &lt;mytext&gt;&lt;i&gt;styled&lt;/i&gt; text&lt;/mytext&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas height="50" layout="axis: y"&gt;
-  &lt;class name="mytext" extends="text"/&gt;
-  &lt;class name="myinputtext" extends="inputtext"/&gt;
-  &lt;myinputtext&gt;plain text&lt;/myinputtext&gt;
-  &lt;mytext&gt;&lt;i&gt;styled&lt;/i&gt; text&lt;/mytext&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/class-inheritance-$10.lzx></example?>
 
 <para>A user-defined class can also handle text content by defining an
 attribute named <indexterm><primary>text</primary></indexterm><sgmltag class="attribute">text</sgmltag> with a value of
@@ -592,36 +278,6 @@
    </programlisting>
 </example>
 
-<?example role="live-example"><title>Text type: html</title><programlisting role="lzx-embednew"><filename>class-inheritance-$12.lzx</filename><parameter/><code>
-&lt;canvas height="50"&gt;
-  &lt;class name="htmlText"&gt;
-    &lt;attribute name="text" type="html"/&gt;
-    &lt;text resize="true" text="${parent.text}"/&gt;
-  &lt;/class&gt;
-  
-  &lt;simplelayout/&gt;
-  &lt;htmlText&gt;
-    &lt;b&gt;bold&lt;/b&gt; text declared here with 
-    &lt;a href="http://www.openlaszlo.org"&gt;&lt;i&gt;anchor&lt;/i&gt;&lt;/a&gt;
-  &lt;/htmlText&gt;
-  &lt;htmlText text="&amp;lt;b&amp;gt;bold&amp;lt;/b&amp;gt; text set here"/&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas height="50"&gt;
-  &lt;class name="htmlText"&gt;
-    &lt;attribute name="text" type="html"/&gt;
-    &lt;text resize="true" text="${parent.text}"/&gt;
-  &lt;/class&gt;
-  
-  &lt;simplelayout/&gt;
-  &lt;htmlText&gt;
-    &lt;b&gt;bold&lt;/b&gt; text declared here with 
-    &lt;a href="http://www.openlaszlo.org"&gt;&lt;i&gt;anchor&lt;/i&gt;&lt;/a&gt;
-  &lt;/htmlText&gt;
-  &lt;htmlText text="&amp;lt;b&amp;gt;bold&amp;lt;/b&amp;gt; text set here"/&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/class-inheritance-$12.lzx></example?>
-
 <para>Note that XHTML markup within a class that is declared with
 <literal>type="text"</literal>, instead of <literal>type="html"</literal>, is
 invalid:</para>
@@ -672,49 +328,7 @@
    </programlisting>
 </example>
 
-<?example role="live-example"><title>Inheriting fonts</title><programlisting role="lzx-embednew"><filename>class-inheritance-$16.lzx</filename><parameter/><code>
-&lt;canvas height="50"&gt;
-  &lt;font src="helmetr.ttf" name="Helvetica"/&gt;
-  &lt;font src="helmetb.ttf" name="Helvetica" style="bold"/&gt;
-  
-  &lt;class name="foo"&gt;
-    &lt;!-- view overrides inherited fontstyle to plain --&gt;
-    &lt;view fontstyle="plain" bgcolor="yellow"&gt;
-      &lt;!-- text overrides inherited fontsize to 12 --&gt;
-      &lt;text fontsize="12"&gt;hello&lt;/text&gt;
-    &lt;/view&gt;
-  &lt;/class&gt;
-  
-  &lt;class name="bar" extends="foo" layout="axis: y"&gt;
-    &lt;text&gt;goodbye&lt;/text&gt;
-  &lt;/class&gt;
-  
-  &lt;bar font="Helvetica" fontstyle="bold" fontsize="12"/&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas height="50"&gt;
-  &lt;font src="helmetr.ttf" name="Helvetica"/&gt;
-  &lt;font src="helmetb.ttf" name="Helvetica" style="bold"/&gt;
-  
-  &lt;class name="foo"&gt;
-    &lt;!-- view overrides inherited fontstyle to plain --&gt;
-    &lt;view fontstyle="plain" bgcolor="yellow"&gt;
-      &lt;!-- text overrides inherited fontsize to 12 --&gt;
-      &lt;text fontsize="12"&gt;hello&lt;/text&gt;
-    &lt;/view&gt;
-  &lt;/class&gt;
-  
-  &lt;class name="bar" extends="foo" layout="axis: y"&gt;
-    &lt;text&gt;goodbye&lt;/text&gt;
-  &lt;/class&gt;
-  
-  &lt;bar font="Helvetica" fontstyle="bold" fontsize="12"/&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/class-inheritance-$16.lzx></example?>
-
  
-
- 
 <para/></section><section id="class-inheritance.instantiating_through_script"><title>Instantiating classes through script</title>
 
 <para>In general, <glossterm>instantiation</glossterm> of objects happen using tags. For
@@ -763,44 +377,7 @@
    </programlisting>
 </example>
 
-<?example role="live-example"><title>Script instantiation</title><programlisting role="lzx-embednew"><filename>class-inheritance-$17.lzx</filename><parameter/><code>
-&lt;canvas height="120"&gt;
-  &lt;class name="mybox"&gt;
-    &lt;view bgcolor="${parent.bgcolor}" width="50" height="50"/&gt;
-  &lt;/class&gt;
-  
-  &lt;view name="redbox" bgcolor="red" width="100" height="100"/&gt;
-  
-  &lt;!-- Create new mybox with cyan bgcolor and place it in canvas.redbox. --&gt;
-  &lt;button x="110" text="add cyan"
-            onclick="if (canvas.redbox['cyan'] == null) 
-                       new mybox(canvas.redbox, { name: 'cyan', bgcolor: 0x00ffff })"/&gt;
 
-  &lt;!-- Remove cyan view from redbox. --&gt;
-  &lt;button x="110" y="30" text="remove cyan"
-            onclick="if (canvas.redbox['cyan'] != null) canvas.redbox.cyan.destroy()"/&gt;
-
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas height="120"&gt;
-  &lt;class name="mybox"&gt;
-    &lt;view bgcolor="${parent.bgcolor}" width="50" height="50"/&gt;
-  &lt;/class&gt;
-  
-  &lt;view name="redbox" bgcolor="red" width="100" height="100"/&gt;
-  
-  &lt;!-- Create new mybox with cyan bgcolor and place it in canvas.redbox. --&gt;
-  &lt;button x="110" text="add cyan"
-            onclick="if (canvas.redbox['cyan'] == null) 
-                       new mybox(canvas.redbox, { name: 'cyan', bgcolor: 0x00ffff })"/&gt;
-
-  &lt;!-- Remove cyan view from redbox. --&gt;
-  &lt;button x="110" y="30" text="remove cyan"
-            onclick="if (canvas.redbox['cyan'] != null) canvas.redbox.cyan.destroy()"/&gt;
-
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/class-inheritance-$17.lzx></example?>
-
 <para/><section id="class-inheritance.procedural_and_replicated"><title>Be careful of mixing replication and classes declared procedurally</title>
 <para>
 Views that you create procedurally are not the same as "clones" created by data replication. In fact, data replication overrides procedurally created views. For example:
@@ -868,45 +445,6 @@
    <textobject><textdata fileref="programs/class-inheritance-$19.lzx"/></textobject> 
    </programlisting>
 </example>
-<?example role="live-example"><title>Inheriting views</title><programlisting role="lzx-embednew"><filename>class-inheritance-$19.lzx</filename><parameter/><code>
-&lt;canvas debug="true"&gt;
-  &lt;debug y="215" width="435"/&gt;
-  
-  &lt;class name="one"&gt;
-    &lt;view name="r" bgcolor="red" width="200" height="200"/&gt;
-  &lt;/class&gt;
-  
-  &lt;class name="two" extends="one"&gt;
-    &lt;view name="g" bgcolor="green" width="100" height="100"/&gt;
-  &lt;/class&gt;
-  
-  &lt;class name="three" extends="two"&gt;
-    &lt;view name="t" bgcolor="teal" width="50" height="50"/&gt;
-    &lt;view name="y" bgcolor="yellow" width="25" height="25"/&gt;
-  &lt;/class&gt;
-  
-  &lt;three id="mysubclass" oninit="Debug.write('subviews: ' + this.subviews)"/&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas debug="true"&gt;
-  &lt;debug y="215" width="435"/&gt;
-  
-  &lt;class name="one"&gt;
-    &lt;view name="r" bgcolor="red" width="200" height="200"/&gt;
-  &lt;/class&gt;
-  
-  &lt;class name="two" extends="one"&gt;
-    &lt;view name="g" bgcolor="green" width="100" height="100"/&gt;
-  &lt;/class&gt;
-  
-  &lt;class name="three" extends="two"&gt;
-    &lt;view name="t" bgcolor="teal" width="50" height="50"/&gt;
-    &lt;view name="y" bgcolor="yellow" width="25" height="25"/&gt;
-  &lt;/class&gt;
-  
-  &lt;three id="mysubclass" oninit="Debug.write('subviews: ' + this.subviews)"/&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/class-inheritance-$19.lzx></example?>
 
 <para>Views declared in an instance of a class will be placed in the
 top-level of the class unless otherwise declared with the
@@ -922,29 +460,6 @@
    <textobject><textdata fileref="programs/class-inheritance-$20.lzx"/></textobject> 
    </programlisting>
 </example>
-<?example role="live-example"><title>Inherited view order</title><programlisting role="lzx-embednew"><filename>class-inheritance-$20.lzx</filename><parameter/><code>
-&lt;canvas debug="true" height="250"&gt;
-  &lt;debug y="115" width="330"/&gt;
-  &lt;class name="foo"&gt;
-    &lt;view name="r" bgcolor="red" width="100" height="100"/&gt;
-  &lt;/class&gt;
-  
-  &lt;foo name="myfoo" oninit="Debug.write('subviews: ' + this.subviews)"&gt;
-    &lt;view name="y" bgcolor="yellow" width="50" height="50"/&gt;
-  &lt;/foo&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas debug="true" height="250"&gt;
-  &lt;debug y="115" width="330"/&gt;
-  &lt;class name="foo"&gt;
-    &lt;view name="r" bgcolor="red" width="100" height="100"/&gt;
-  &lt;/class&gt;
-  
-  &lt;foo name="myfoo" oninit="Debug.write('subviews: ' + this.subviews)"&gt;
-    &lt;view name="y" bgcolor="yellow" width="50" height="50"/&gt;
-  &lt;/foo&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/class-inheritance-$20.lzx></example?>
 
 <para>Notice how view <varname>y</varname> follows view
 <varname>r</varname> in its subviews array. If a
@@ -960,37 +475,7 @@
    <textobject><textdata fileref="programs/class-inheritance-$21.lzx"/></textobject> 
    </programlisting>
 </example>
-<?example role="live-example"><title>Inherited view order with simplelayout</title><programlisting role="lzx-embednew"><filename>class-inheritance-$21.lzx</filename><parameter/><code>
-&lt;canvas debug="true" height="250"&gt;
-  &lt;debug x="75" y="115" width="330"/&gt;
-  
-  &lt;class name="foo"&gt;
-    &lt;view name="r" bgcolor="red" width="100" height="100"/&gt;
-  &lt;/class&gt;
-  
-  &lt;foo name="myfoo" oninit="Debug.write('subviews: ' + this.subviews)"&gt;
-    &lt;simplelayout/&gt;
-    &lt;view name="y" bgcolor="yellow" width="50" height="50"/&gt;
-  &lt;/foo&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas debug="true" height="250"&gt;
-  &lt;debug x="75" y="115" width="330"/&gt;
-  
-  &lt;class name="foo"&gt;
-    &lt;view name="r" bgcolor="red" width="100" height="100"/&gt;
-  &lt;/class&gt;
-  
-  &lt;foo name="myfoo" oninit="Debug.write('subviews: ' + this.subviews)"&gt;
-    &lt;simplelayout/&gt;
-    &lt;view name="y" bgcolor="yellow" width="50" height="50"/&gt;
-  &lt;/foo&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/class-inheritance-$21.lzx></example?>
 
-
-
-
 <para/></section><section><title>Placement</title>
 
 <para>The internal structure of a class is generally not visible to its
@@ -1004,35 +489,6 @@
    <textobject><textdata fileref="programs/class-inheritance-$22.lzx"/></textobject> 
    </programlisting>
 </example>
-<?example role="live-example"><title>Undesired placement</title><programlisting role="lzx-embednew"><filename>class-inheritance-$22.lzx</filename><parameter/><code>
-&lt;canvas height="50"&gt;
-  &lt;class name="myframe" extends="view"&gt;
-    &lt;attribute name="bgcolor" value="red"/&gt;
-    &lt;view x="5" y="5" width="${parent.width-10}"
-               height="${parent.height-10}"
-               bgcolor="#FFFFCC"/&gt;
-  &lt;/class&gt;
-  
-  &lt;!-- make an instance of myframe with text inside it--&gt;
-  &lt;myframe width="220" height="20"&gt;
-    &lt;text&gt;This is some text&lt;/text&gt;
-  &lt;/myframe&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas height="50"&gt;
-  &lt;class name="myframe" extends="view"&gt;
-    &lt;attribute name="bgcolor" value="red"/&gt;
-    &lt;view x="5" y="5" width="${parent.width-10}"
-               height="${parent.height-10}"
-               bgcolor="#FFFFCC"/&gt;
-  &lt;/class&gt;
-  
-  &lt;!-- make an instance of myframe with text inside it--&gt;
-  &lt;myframe width="220" height="20"&gt;
-    &lt;text&gt;This is some text&lt;/text&gt;
-  &lt;/myframe&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/class-inheritance-$22.lzx></example?>
 
 <para>This behavior can be changed using the
 <indexterm><primary>defaultplacement</primary></indexterm><sgmltag class="attribute">defaultplacement</sgmltag> attribute or the
@@ -1054,43 +510,6 @@
    <textobject><textdata fileref="programs/class-inheritance-$23.lzx"/></textobject> 
    </programlisting>
 </example>
-<?example role="live-example"><title>Placing a child in desired subview</title><programlisting role="lzx-embednew"><filename>class-inheritance-$23.lzx</filename><parameter/><code>
-&lt;canvas height="50"&gt;
-  &lt;class name="myframe" extends="view"&gt;
-    &lt;attribute name="bgcolor" value="red"/&gt;
-    
-    &lt;!-- child views of class instances will be placed in the first view
-            called insideview --&gt;
-    &lt;attribute name="defaultplacement" value="insideview" type="string"/&gt;
-    
-    &lt;view x="5" y="5" width="${parent.width-10}" name="insideview"
-                height="${parent.height-10}" 
-                bgcolor="#FFFFCC"/&gt;
-  &lt;/class&gt;
-  &lt;!-- make an instance of myframe with text inside it--&gt;
-  &lt;myframe width="220" height="50"&gt;
-    &lt;text&gt;This is some text&lt;/text&gt;
-  &lt;/myframe&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas height="50"&gt;
-  &lt;class name="myframe" extends="view"&gt;
-    &lt;attribute name="bgcolor" value="red"/&gt;
-    
-    &lt;!-- child views of class instances will be placed in the first view
-            called insideview --&gt;
-    &lt;attribute name="defaultplacement" value="insideview" type="string"/&gt;
-    
-    &lt;view x="5" y="5" width="${parent.width-10}" name="insideview"
-                height="${parent.height-10}" 
-                bgcolor="#FFFFCC"/&gt;
-  &lt;/class&gt;
-  &lt;!-- make an instance of myframe with text inside it--&gt;
-  &lt;myframe width="220" height="50"&gt;
-    &lt;text&gt;This is some text&lt;/text&gt;
-  &lt;/myframe&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/class-inheritance-$23.lzx></example?>
 
 <para>Elements declared in a class are not considered for placement, but children in
 subclasses or class instances will be.</para>
@@ -1102,76 +521,7 @@
    </programlisting>
 </example>
 
-<?example role="live-example"><title>Defaultplacement</title><programlisting role="lzx-embednew"><filename>class-inheritance-$24.lzx</filename><parameter/><code>
-&lt;canvas height="150"&gt;
-  &lt;class name="myframe" extends="view"&gt;
-      &lt;attribute name="bgcolor" value="red"/&gt;
 
-      &lt;attribute name="defaultplacement" value="'insideview'"/&gt;
-
-      &lt;view x="5" y="5" width="${parent.width-10}" name="insideview"
-              height="${parent.height-10}" 
-              bgcolor="#FFFFCC"/&gt;
-
-      &lt;!-- this view is not affected by defaultplacement --&gt;
-      &lt;!-- because it's declared in the class.           --&gt; 
-      &lt;view x="5" y="${parent.height}" name="anotherview" 
-            width="${parent.width-10}" height="10"
-            bgcolor="blue"/&gt;
-  &lt;/class&gt;
-
-  &lt;class name="subframe" extends="myframe"&gt;
-    &lt;!-- the layout and text will be placed in insideview of myframe --&gt;
-    &lt;simplelayout axis="y"/&gt;
-    &lt;text bgcolor="teal"&gt;subframe text&lt;/text&gt;
-  &lt;/class&gt;
-
-
-  &lt;myframe width="220" height="50"&gt;
-    &lt;!-- this will be placed in insideview --&gt;
-    &lt;text&gt;This is some text&lt;/text&gt;
-  &lt;/myframe&gt;
-
-  &lt;subframe width="220" height="50" y="70"&gt;
-    &lt;text bgcolor="green"&gt;More subframe text&lt;/text&gt;
-  &lt;/subframe&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas height="150"&gt;
-  &lt;class name="myframe" extends="view"&gt;
-      &lt;attribute name="bgcolor" value="red"/&gt;
-
-      &lt;attribute name="defaultplacement" value="'insideview'"/&gt;
-
-      &lt;view x="5" y="5" width="${parent.width-10}" name="insideview"
-              height="${parent.height-10}" 
-              bgcolor="#FFFFCC"/&gt;
-
-      &lt;!-- this view is not affected by defaultplacement --&gt;
-      &lt;!-- because it's declared in the class.           --&gt; 
-      &lt;view x="5" y="${parent.height}" name="anotherview" 
-            width="${parent.width-10}" height="10"
-            bgcolor="blue"/&gt;
-  &lt;/class&gt;
-
-  &lt;class name="subframe" extends="myframe"&gt;
-    &lt;!-- the layout and text will be placed in insideview of myframe --&gt;
-    &lt;simplelayout axis="y"/&gt;
-    &lt;text bgcolor="teal"&gt;subframe text&lt;/text&gt;
-  &lt;/class&gt;
-
-
-  &lt;myframe width="220" height="50"&gt;
-    &lt;!-- this will be placed in insideview --&gt;
-    &lt;text&gt;This is some text&lt;/text&gt;
-  &lt;/myframe&gt;
-
-  &lt;subframe width="220" height="50" y="70"&gt;
-    &lt;text bgcolor="green"&gt;More subframe text&lt;/text&gt;
-  &lt;/subframe&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/class-inheritance-$24.lzx></example?>
-
 <para/><section><title>Placing layouts</title>
 
 <para>A layout declared as an attribute will be considered for
@@ -1194,51 +544,9 @@
    <textobject><textdata fileref="programs/class-inheritance-$25.lzx"/></textobject> 
    </programlisting>
 </example>
-<?example role="live-example"><title>Layout placement</title><programlisting role="lzx-embednew"><filename>class-inheritance-$25.lzx</filename><parameter/><code>
-&lt;canvas&gt;
-  &lt;!-- the layout attribute will be placed in the red view --&gt;
-  &lt;class name="myplacement" defaultplacement="'red'" layout="axis: x; spacing: 5"&gt;
-    &lt;!-- this layout element applies to views inside of class --&gt;
-    &lt;simplelayout spacing="10"/&gt;
-    &lt;view name="red" bgcolor="red" width="150" height="150"/&gt;
-    &lt;view name="yellow" bgcolor="yellow" width="150" height="150"/&gt;
-  &lt;/class&gt;
 
-  &lt;myplacement&gt;
-    &lt;!-- placement overrides defaultplacement --&gt;
-    &lt;view name="blue" bgcolor="blue" width="50" height="50" placement="yellow"/&gt;
 
-    &lt;!-- green and teal will be placed in red --&gt;
-    &lt;view name="green" width="50" height="50" bgcolor="green"/&gt;
-    &lt;view name="teal" width="50" height="50" bgcolor="teal"/&gt;
-  &lt;/myplacement&gt;
 
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas&gt;
-  &lt;!-- the layout attribute will be placed in the red view --&gt;
-  &lt;class name="myplacement" defaultplacement="'red'" layout="axis: x; spacing: 5"&gt;
-    &lt;!-- this layout element applies to views inside of class --&gt;
-    &lt;simplelayout spacing="10"/&gt;
-    &lt;view name="red" bgcolor="red" width="150" height="150"/&gt;
-    &lt;view name="yellow" bgcolor="yellow" width="150" height="150"/&gt;
-  &lt;/class&gt;
-
-  &lt;myplacement&gt;
-    &lt;!-- placement overrides defaultplacement --&gt;
-    &lt;view name="blue" bgcolor="blue" width="50" height="50" placement="yellow"/&gt;
-
-    &lt;!-- green and teal will be placed in red --&gt;
-    &lt;view name="green" width="50" height="50" bgcolor="green"/&gt;
-    &lt;view name="teal" width="50" height="50" bgcolor="teal"/&gt;
-  &lt;/myplacement&gt;
-
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/class-inheritance-$25.lzx></example?>
-
-
-
-
 <para/></section><section><title>ImmediateParent</title>
 
 <para>A child placed using <indexterm><primary>defaultplacement</primary></indexterm><sgmltag class="attribute">defaultplacement</sgmltag> or
@@ -1260,46 +568,6 @@
    </programlisting>
 </example>
 
-<?example role="live-example"><title>Parent vs. immediateparent</title><programlisting role="lzx-embednew"><filename>class-inheritance-$26.lzx</filename><parameter/><code>
-&lt;canvas debug="true" height="200"&gt;    
-  &lt;debug x="155"/&gt;
-
-  &lt;class name="container" defaultplacement="'red'"&gt;
-    &lt;view name="red" bgcolor="red" width="150" height="150"/&gt;
-  &lt;/class&gt;
-
-  &lt;!-- yellow's parent is top and its immediateparent   --&gt;
-  &lt;!-- is red, since that's where it's actually placed. --&gt;
-  &lt;container name="top"&gt;
-    &lt;view name="yellow" bgcolor="yellow" width="50" height="50"&gt;
-      &lt;handler name="oninit"&gt;
-        Debug.write('parent: ', this.parent);
-        Debug.write('immediateparent: ', this.immediateparent);
-      &lt;/handler&gt;
-    &lt;/view&gt;
-  &lt;/container&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas debug="true" height="200"&gt;    
-  &lt;debug x="155"/&gt;
-
-  &lt;class name="container" defaultplacement="'red'"&gt;
-    &lt;view name="red" bgcolor="red" width="150" height="150"/&gt;
-  &lt;/class&gt;
-
-  &lt;!-- yellow's parent is top and its immediateparent   --&gt;
-  &lt;!-- is red, since that's where it's actually placed. --&gt;
-  &lt;container name="top"&gt;
-    &lt;view name="yellow" bgcolor="yellow" width="50" height="50"&gt;
-      &lt;handler name="oninit"&gt;
-        Debug.write('parent: ', this.parent);
-        Debug.write('immediateparent: ', this.immediateparent);
-      &lt;/handler&gt;
-    &lt;/view&gt;
-  &lt;/container&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/class-inheritance-$26.lzx></example?>
-
 <para/></section><section><title>Obtaining a reference to the defaultPlacement node</title>
 
 <para>There may be instances a class needs a reference to the default placement
@@ -1312,73 +580,7 @@
    </programlisting>
 </example>
 
-<?example role="live-example"><title>Obtaining a reference to the defaultPlacement node</title><programlisting role="lzx-embednew"><filename>class-inheritance-$27.lzx</filename><parameter/><code>
-&lt;canvas debug="true" height="200"&gt;
-  &lt;debug x="155"/&gt;
 
-  &lt;class name="container" defaultplacement="'red'"&gt;
-    &lt;attribute name="contentview" value="null" type="expression"/&gt;
-
-    &lt;method name="init"&gt;
-      super.init();
-
-      // get a reference to the content node
-      if ( this.contentview == null ) {
-        if ( this.defaultplacement != null ){
-          this.contentview = this.searchSubnodes( "name" , this.defaultplacement );
-        } else {
-          this.contentview = this;
-        }
-      }
-      
-      Debug.write("content view", this.contentview);
-    &lt;/method&gt;
-
-    &lt;view name="green" bgcolor="green" width="100" height="100"&gt;
-      &lt;view name="yellow" bgcolor="yellow" width="50%" height="50%"&gt;
-        &lt;view name="red" bgcolor="red" width="50%" height="50%"/&gt;
-      &lt;/view&gt;
-    &lt;/view&gt;
-  &lt;/class&gt;
-
-  &lt;container name="top"/&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas debug="true" height="200"&gt;
-  &lt;debug x="155"/&gt;
-
-  &lt;class name="container" defaultplacement="'red'"&gt;
-    &lt;attribute name="contentview" value="null" type="expression"/&gt;
-
-    &lt;method name="init"&gt;
-      super.init();
-
-      // get a reference to the content node
-      if ( this.contentview == null ) {
-        if ( this.defaultplacement != null ){
-          this.contentview = this.searchSubnodes( "name" , this.defaultplacement );
-        } else {
-          this.contentview = this;
-        }
-      }
-      
-      Debug.write("content view", this.contentview);
-    &lt;/method&gt;
-
-    &lt;view name="green" bgcolor="green" width="100" height="100"&gt;
-      &lt;view name="yellow" bgcolor="yellow" width="50%" height="50%"&gt;
-        &lt;view name="red" bgcolor="red" width="50%" height="50%"/&gt;
-      &lt;/view&gt;
-    &lt;/view&gt;
-  &lt;/class&gt;
-
-  &lt;container name="top"/&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/class-inheritance-$27.lzx></example?>
-
-
-
-
 <para/></section><section><title>Overriding placement behavior using <indexterm><primary><literal>determinePlacement()</literal></primary></indexterm><methodname>determinePlacement()</methodname></title>
 
 <para>A node calls its <indexterm><primary><literal>determinePlacement()</literal></primary></indexterm><methodname>determinePlacement()</methodname> method to
@@ -1425,64 +627,10 @@
    </programlisting>
 </example>
 
-<?example role="live-example"><title>Overriding determinePlacement</title><programlisting role="lzx-embednew"><filename>class-inheritance-$29.lzx</filename><parameter/><code>
-&lt;canvas debug="true" height="200"&gt;
-  &lt;debug x="155"/&gt;
 
-  &lt;class name="container" defaultplacement="'red'"&gt;
-    &lt;!-- setting subnode's parent to be the same as immediateparent --&gt;
-    &lt;method name="determinePlacement" args="subnode, place, args"&gt;
-      var p = super.determinePlacement(subnode, place, args);
-      subnode.parent = p;
-      return p;
-    &lt;/method&gt;
 
-    &lt;view name="blue" bgcolor="blue" width="100" height="100"&gt;
-      &lt;view name="red" bgcolor="red" width="150" height="150"/&gt;
-    &lt;/view&gt;
-  &lt;/class&gt;
 
-  &lt;container name="top"&gt;
-    &lt;view name="yellow" bgcolor="yellow" width="50" height="50"&gt;
-      &lt;handler name="oninit"&gt;
-        Debug.write('parent: ', this.parent);
-        Debug.write('immediateparent: ', this.immediateparent);
-      &lt;/handler&gt;
-    &lt;/view&gt;
-  &lt;/container&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas debug="true" height="200"&gt;
-  &lt;debug x="155"/&gt;
 
-  &lt;class name="container" defaultplacement="'red'"&gt;
-    &lt;!-- setting subnode's parent to be the same as immediateparent --&gt;
-    &lt;method name="determinePlacement" args="subnode, place, args"&gt;
-      var p = super.determinePlacement(subnode, place, args);
-      subnode.parent = p;
-      return p;
-    &lt;/method&gt;
-
-    &lt;view name="blue" bgcolor="blue" width="100" height="100"&gt;
-      &lt;view name="red" bgcolor="red" width="150" height="150"/&gt;
-    &lt;/view&gt;
-  &lt;/class&gt;
-
-  &lt;container name="top"&gt;
-    &lt;view name="yellow" bgcolor="yellow" width="50" height="50"&gt;
-      &lt;handler name="oninit"&gt;
-        Debug.write('parent: ', this.parent);
-        Debug.write('immediateparent: ', this.immediateparent);
-      &lt;/handler&gt;
-    &lt;/view&gt;
-  &lt;/container&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/class-inheritance-$29.lzx></example?>
-
-
-
-
-
 <para/></section></section><section><title>Construction and initialization</title>
 
 <para>When writing complex classes, a deep understanding of how classes
@@ -1516,70 +664,6 @@
    <textobject><textdata fileref="programs/class-inheritance-$30.lzx"/></textobject> 
    </programlisting>
 </example>
-<?example role="live-example"><title>Construction and initialization</title><programlisting role="lzx-embednew"><filename>class-inheritance-$30.lzx</filename><parameter/><code>
-&lt;canvas debug="true" height="180"&gt;
-  &lt;debug height="160"/&gt;
-
-  &lt;class name="container"&gt;
-    &lt;!-- Don't forget to call super.construct(parent,args)!! --&gt;
-    &lt;method name="construct" args="parent,args"&gt;
-      Debug.write("container construct", parent, args);
-      super.construct(parent, args);
-    &lt;/method&gt;
-
-    &lt;!-- The onconstruct event --&gt;
-    &lt;handler name="onconstruct" args="v"&gt;
-      Debug.write("container onconstruct", v);
-    &lt;/handler&gt;
-
-    &lt;method name="init"&gt;
-      Debug.write("container init");
-    &lt;/method&gt;
-
-    &lt;handler name="oninit"&gt;
-      Debug.write("container oninit");
-    &lt;/handler&gt;
-  &lt;/class&gt;
-
-  &lt;container&gt;
-    &lt;view name="outside" oninit="Debug.write('outside oninit')"&gt;
-      &lt;view name="inside" oninit="Debug.write('inside oninit')"/&gt;
-    &lt;/view&gt;        
-  &lt;/container&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas debug="true" height="180"&gt;
-  &lt;debug height="160"/&gt;
-
-  &lt;class name="container"&gt;
-    &lt;!-- Don't forget to call super.construct(parent,args)!! --&gt;
-    &lt;method name="construct" args="parent,args"&gt;
-      Debug.write("container construct", parent, args);
-      super.construct(parent, args);
-    &lt;/method&gt;
-
-    &lt;!-- The onconstruct event --&gt;
-    &lt;handler name="onconstruct" args="v"&gt;
-      Debug.write("container onconstruct", v);
-    &lt;/handler&gt;
-
-    &lt;method name="init"&gt;
-      Debug.write("container init");
-    &lt;/method&gt;
-
-    &lt;handler name="oninit"&gt;
-      Debug.write("container oninit");
-    &lt;/handler&gt;
-  &lt;/class&gt;
-
-  &lt;container&gt;
-    &lt;view name="outside" oninit="Debug.write('outside oninit')"&gt;
-      &lt;view name="inside" oninit="Debug.write('inside oninit')"/&gt;
-    &lt;/view&gt;        
-  &lt;/container&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/class-inheritance-$30.lzx></example?>
-
 <para>Following instantiation (i.e., after the <indexterm><primary>onconstruct event</primary></indexterm><literal>onconstruct</literal>
 is sent) and if there are child nodes, the
 <indexterm><primary><literal>createChildren()</literal></primary></indexterm><methodname>createChildren()</methodname> method is called. This method takes an
@@ -1596,56 +680,7 @@
    <textobject><textdata fileref="programs/class-inheritance-$31.lzx"/></textobject> 
    </programlisting>
 </example>
-<?example role="live-example"><title>createChildren()</title><programlisting role="lzx-embednew"><filename>class-inheritance-$31.lzx</filename><parameter/><code>
-&lt;canvas debug="true" height="180"&gt;
-  &lt;debug height="160"/&gt;
 
-  &lt;class name="container"&gt;
-    &lt;handler name="onconstruct" args="v"&gt;
-      Debug.write("container onconstruct", v);
-    &lt;/handler&gt;
-
-    &lt;method name="createChildren" args="c"&gt;
-      Debug.write("container createChildren", c);
-      Debug.write("    c[0].name:", c[0].name);
-      Debug.write("    c[0].attrs:", c[0].attrs);
-      Debug.write("    c[0].children:", c[0].children);
-      super.createChildren(c);
-    &lt;/method&gt;
-  &lt;/class&gt;
-
-  &lt;container&gt;
-   &lt;view name="outside"&gt;
-     &lt;view name="inside"/&gt;
-   &lt;/view&gt;
-  &lt;/container&gt;
-&lt;/canvas&gt;
-</code></programlisting><programlisting>
-&lt;canvas debug="true" height="180"&gt;
-  &lt;debug height="160"/&gt;
-
-  &lt;class name="container"&gt;
-    &lt;handler name="onconstruct" args="v"&gt;
-      Debug.write("container onconstruct", v);
-    &lt;/handler&gt;
-
-    &lt;method name="createChildren" args="c"&gt;
-      Debug.write("container createChildren", c);
-      Debug.write("    c[0].name:", c[0].name);
-      Debug.write("    c[0].attrs:", c[0].attrs);
-      Debug.write("    c[0].children:", c[0].children);
-      super.createChildren(c);
-    &lt;/method&gt;
-  &lt;/class&gt;
-
-  &lt;container&gt;
-   &lt;view name="outside"&gt;
-     &lt;view name="inside"/&gt;
-   &lt;/view&gt;
-  &lt;/container&gt;
-&lt;/canvas&gt;
-</programlisting><?lzx-edit programs/class-inheritance-$31.lzx></example?>
-
 <para>In summary, you can expect the basic timing order of method and event calls to look
 like:</para>
 

Copied: openlaszlo/branches/paperpie/docs/src/developers/data-chapters-outline-new (from rev 7133, openlaszlo/trunk/docs/src/developers/data-chapters-outline-new)

Modified: openlaszlo/branches/paperpie/docs/src/developers/debugging.dbk
===================================================================
--- openlaszlo/branches/paperpie/docs/src/developers/debugging.dbk	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/docs/src/developers/debugging.dbk	2007-11-05 23:35:46 UTC (rev 7140)
@@ -18,21 +18,18 @@
   to explore the LZX API.</para></listitem><listitem><para>Warnings for runtime errors such as undefined variables and
   functions are detected, and printed to the debug console.</para></listitem></itemizedlist>
 
-<informalfigure><mediaobject><imageobject><imagedata fileref="images/debugger-new-console.png"/></imageobject></mediaobject></informalfigure>
+<para><informalfigure><mediaobject><imageobject><imagedata fileref="images/debugger-new-console.png"/></imageobject></mediaobject></informalfigure></para>
 
-<?example role="live-example">
-   <title>The Debugger window</title>
-   <programlisting language="lzx">
-   <textobject><textdata fileref="debugging-$1.lzx"/></textobject> 
-   </programlisting>
-</example>
+<!--  remove rather pointless (and broken) example. IORIO 30 oct 2007 -->
 
 <para>Debugging may cause the application to run more slowly, even if
 the debugger window is not visible.</para>
 
+<!-- fix broken id on section. IORIO 30 oct 2007 -->
+<para/>
+</section>
+<section id="enabling-the-debugger"><title>Enabling the Debugger</title>
 
-<para/><section id="debugging.enabling-the-debugger"><title>Enabling the Debugger</title>
-
 <para>There are three ways to turn on the debugger in your application:</para>
 
 <variablelist><varlistentry><term>The <indexterm><primary>debug</primary></indexterm><sgmltag class="attribute">debug</sgmltag> attribute</term><listitem><para>The debugger is enabled on if the canvas <indexterm><primary>debug</primary></indexterm><sgmltag class="attribute">debug</sgmltag> attribute is set to true:</para>
@@ -60,7 +57,7 @@
 
 <section id="debugging.runtime-error-checking"><title>Runtime Error Checking</title>
 
-<para>Enabling the debugger using one of the methods described in <xref linkend="debugging.enabling-the-debugger"/> has two effects:</para>
+<para>Enabling the debugger using one of the methods described in <xref linkend="enabling-the-debugger"/> has two effects:</para>
 <itemizedlist spacing="compact"><listitem><para>It includes the debugger visual component.  This displays debug messages, and has a command line interface for evaluating JavaScript statements.</para></listitem><listitem><para>It compiles the application with additional instrumentation to perform <indexterm significance="preferred"><primary>runtime error checking</primary></indexterm><glossterm>runtime error checking</glossterm>.  Certain classes of erroneous code (below) result in warnings that are logged to the debug window.</para></listitem></itemizedlist>
 
 <para>A program that is compiled with runtime error checking will contain code that checks for the following conditions:</para>
@@ -115,8 +112,7 @@
    <textobject><textdata fileref="programs/canvasversion.lzx"/></textobject> 
    </programlisting>
 </example>
-<?example role="live-example"><title>Using canvas.lpsversion</title><programlisting role="lzx-embednew"><filename>canvasversion.lzx</filename><parameter/><code>
-</programlisting><?lzx-edit programs/canvasversion.lzx></example?>
+
 <para>You can get more information, for example the build number and target runtime, by using <literal>Debug.versionInfo()</literal>.</para>
 <example role="live-example">
    <title>Using Debug.versionInfo()</title>
@@ -124,8 +120,7 @@
    <textobject><textdata fileref="programs/debuginfo.lzx"/></textobject> 
    </programlisting>
 </example>
-<?example role="live-example"><title>Using Debug.versionInfo()</title><programlisting role="lzx-embednew"><filename>debuginfo.lzx</filename><parameter/><code>
-</programlisting><?lzx-edit programs/debuginfo.lzx></example?>
+
 <para>While the previous two methods give you version information, if you want to generat a full bug report, see <xref linkend="generate-bug-report" />.</para>
 </section>
 <!-- end of added section to fix LPP-4822 and LPP-2658. IORIO 23 oct 2007  -->
@@ -290,7 +285,7 @@
 
 <para>Note that this does not <emphasis role="em">enable</emphasis> the debugger; it merely
 configures its appearance when the debugger is enabled.  You still
-have use one of the methods in <xref linkend="debugging.enabling-the-debugger"/> to enable debugging.  The
+have use one of the methods in <xref linkend="enabling-the-debugger"/> to enable debugging.  The
 effect of this is that you can leave the <indexterm><primary>debug</primary></indexterm><sgmltag class="element">&lt;debug&gt;</sgmltag> in
 your program at all times (including in production code), and it will
 only have an effect when debugging is enabled.</para>

Modified: openlaszlo/branches/paperpie/docs/src/developers/ecmascript-and-lzx.dbk
===================================================================
--- openlaszlo/branches/paperpie/docs/src/developers/ecmascript-and-lzx.dbk	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/docs/src/developers/ecmascript-and-lzx.dbk	2007-11-05 23:35:46 UTC (rev 7140)
@@ -37,7 +37,8 @@
     Exceptions 
   </term><listitem>
     <para>
-      There are no exceptions, and no exception handling in the SWF runtime. <literal>try</literal>/<literal>catch</literal>/<literal>finally</literal> is not supported. 
+    <!-- fix LPP-4996: Remove "try-catch" from list of unsupported javascript thingies. IORIO 30 oct 2007 -->
+      There are no exceptions, and no exception handling in the SWF runtime: the SWF runtime does not signal any runtime errors.
     </para>
     <para>
       Errors such as <literal>1/0</literal>, <literal><varname>u</varname>()</literal>, <literal><varname>k</varname>()</literal>, <literal><varname>u</varname>.<varname>p</varname></literal>, and <literal><varname>o</varname>.<varname>u</varname></literal> (where <literal><varname>u</varname></literal> is an undeclared variable, <literal><varname>k</varname></literal> is defined but isn't a function, and <literal><varname>o</varname></literal> is an object with property <literal><varname>p</varname></literal>) are silently ignored in the SWF runtime. (If debugging is enabled, all but the first of these will generate a warning message in the debugger window when evaluated.) 

Modified: openlaszlo/branches/paperpie/docs/src/developers/language-preliminaries.dbk
===================================================================
--- openlaszlo/branches/paperpie/docs/src/developers/language-preliminaries.dbk	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/docs/src/developers/language-preliminaries.dbk	2007-11-05 23:35:46 UTC (rev 7140)
@@ -579,7 +579,10 @@
 
 <para>The key thing to understand is that while other languages and technologies have implemented merge algorithms that may appear similar on the surface, LZX's data binding is novel in the creation of program objects that retain a live connection with the entities of the data source.</para> 
 
-<para/></section></section><section><title>Combining Tags and Script in LZX Programs</title> 
+<para/></section></section>
+<!-- add id tag to section so we can link to here. IORIO 22 oct 2007 -->
+<section id="combine-tags-script">
+><title>Combining Tags and Script in LZX Programs</title> 
 
 <para>As mentioned earlier, virtually all nontrivial LZX programs contain both (XML) tags and script. Tags are used declaratively, that is, to define objects and their attributes. Script is used procedurally, that is, to explicitly define a series of steps. Although the two kinds of code are liberally intermixed within LZX — for example, script can appear within tags — each syntax locally maintains its integrity.</para> 
 

Modified: openlaszlo/branches/paperpie/docs/src/developers/methods-events-attributes.dbk
===================================================================
--- openlaszlo/branches/paperpie/docs/src/developers/methods-events-attributes.dbk	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/docs/src/developers/methods-events-attributes.dbk	2007-11-05 23:35:46 UTC (rev 7140)
@@ -1037,7 +1037,9 @@
 
 See the <xref linkend="constraints"/> for details.
 </para>
-<para/></section><section><title>Attribute types</title>
+<para/></section>
+<!-- add id to section so the reference can xref here. IORIO 22 0ct 2007 -->
+<section id="attribute-types"><title>Attribute types</title>
 <para>
 By default, attributes are of the JavaScript expression type, but in some cases the default declaration doesn't give enough instruction to achieve the desired result. In this example, no labels are displayed in the boxes:
 </para>

Modified: openlaszlo/branches/paperpie/docs/src/developers/programs/class-inheritance-$25.lzx
===================================================================
--- openlaszlo/branches/paperpie/docs/src/developers/programs/class-inheritance-$25.lzx	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/docs/src/developers/programs/class-inheritance-$25.lzx	2007-11-05 23:35:46 UTC (rev 7140)
@@ -1,7 +1,7 @@
 
 <canvas>
   <!-- the layout attribute will be placed in the red view -->
-  <class name="myplacement" defaultplacement="'red'" layout="axis: x; spacing: 5">
+  <class name="myplacement" defaultplacement="red" layout="axis: x; spacing: 5">
     <!-- this layout element applies to views inside of class -->
     <simplelayout spacing="10"/>
     <view name="red" bgcolor="red" width="150" height="150"/>

Modified: openlaszlo/branches/paperpie/docs/src/developers/programs/class-inheritance-$26.lzx
===================================================================
--- openlaszlo/branches/paperpie/docs/src/developers/programs/class-inheritance-$26.lzx	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/docs/src/developers/programs/class-inheritance-$26.lzx	2007-11-05 23:35:46 UTC (rev 7140)
@@ -2,7 +2,7 @@
 <canvas debug="true" height="200">    
   <debug x="155"/>
 
-  <class name="container" defaultplacement="'red'">
+  <class name="container" defaultplacement="red">
     <view name="red" bgcolor="red" width="150" height="150"/>
   </class>
 

Modified: openlaszlo/branches/paperpie/docs/src/developers/programs/class-inheritance-$27.lzx
===================================================================
--- openlaszlo/branches/paperpie/docs/src/developers/programs/class-inheritance-$27.lzx	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/docs/src/developers/programs/class-inheritance-$27.lzx	2007-11-05 23:35:46 UTC (rev 7140)
@@ -2,7 +2,7 @@
 <canvas debug="true" height="200">
   <debug x="155"/>
 
-  <class name="container" defaultplacement="'red'">
+  <class name="container" defaultplacement="red">
     <attribute name="contentview" value="null" type="expression"/>
 
     <method name="init">

Modified: openlaszlo/branches/paperpie/docs/src/developers/programs/class-inheritance-$29.lzx
===================================================================
--- openlaszlo/branches/paperpie/docs/src/developers/programs/class-inheritance-$29.lzx	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/docs/src/developers/programs/class-inheritance-$29.lzx	2007-11-05 23:35:46 UTC (rev 7140)
@@ -2,7 +2,7 @@
 <canvas debug="true" height="200">
   <debug x="155"/>
 
-  <class name="container" defaultplacement="'red'">
+  <class name="container" defaultplacement="red">
     <!-- setting subnode's parent to be the same as immediateparent -->
     <method name="determinePlacement" args="subnode, place, args">
       var p = super.determinePlacement(subnode, place, args);

Copied: openlaszlo/branches/paperpie/docs/src/developers/programs/debug-mon-trace.lzx (from rev 7133, openlaszlo/trunk/docs/src/developers/programs/debug-mon-trace.lzx)

Modified: openlaszlo/branches/paperpie/docs/src/developers/programs/debugging-$2.lzx
===================================================================
--- openlaszlo/branches/paperpie/docs/src/developers/programs/debugging-$2.lzx	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/docs/src/developers/programs/debugging-$2.lzx	2007-11-05 23:35:46 UTC (rev 7140)
@@ -1,5 +1,5 @@
 <canvas height="300" debug="true">
-  <debug/>
+  <debug y="5" />
 </canvas>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
 * Copyright 2007 Laszlo Systems, Inc.  All Rights Reserved.                   *

Modified: openlaszlo/branches/paperpie/docs/src/developers/programs/text-$6.lzx
===================================================================
--- openlaszlo/branches/paperpie/docs/src/developers/programs/text-$6.lzx	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/docs/src/developers/programs/text-$6.lzx	2007-11-05 23:35:46 UTC (rev 7140)
@@ -3,8 +3,7 @@
   <simplelayout/>
   <slider name="down" width="100" value="5000" minvalue="1000" maxvalue="100000"
 keystep="1000"/>
-<!-- added resize attribute IORIO 21 sep 2007                               -->
-  <text resize="false" text="${'Slider Value is '+parent.down.value+' nicely constrained'}"/>
+  <text resize="false" text="${'Slider Value is '+parent.down.value+' unnicely truncated'}"/>
 </canvas>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
 * Copyright 2007 Laszlo Systems, Inc.  All Rights Reserved.                   *

Modified: openlaszlo/branches/paperpie/docs/src/developers/programs/text-$7.lzx
===================================================================
--- openlaszlo/branches/paperpie/docs/src/developers/programs/text-$7.lzx	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/docs/src/developers/programs/text-$7.lzx	2007-11-05 23:35:46 UTC (rev 7140)
@@ -1,10 +1,8 @@
-
-
 <canvas height="50">
   <simplelayout/>
   <slider name="down" width="100" value="5000" minvalue="1000" maxvalue="100000"
 keystep="1000"/>
-  <text resize="true" text="${'Slider Value is '+parent.down.value+' nicely constrained'}"/>
+  <text resize="true" text="${'Slider Value is '+parent.down.value+' expands to contain text'}"/>
 </canvas>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
 * Copyright 2007 Laszlo Systems, Inc.  All Rights Reserved.                   *

Modified: openlaszlo/branches/paperpie/docs/src/developers/proxied.dbk
===================================================================
--- openlaszlo/branches/paperpie/docs/src/developers/proxied.dbk	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/docs/src/developers/proxied.dbk	2007-11-05 23:35:46 UTC (rev 7140)
@@ -259,20 +259,24 @@
 <para>
 2. put this code in your OpenLaszlo application:
 </para>
+<!-- fix LPP-4927: Chapter 25 Section 3.1.1 misleading example url and minor error in following information. IORIO 31 oct 2007 -->
 <programlisting>
 &lt;script&gt;
-System.security.loadPolicyFile("http://localhost:8888/[server]/crossdomain.xml");
+System.security.loadPolicyFile("http://[server]/crossdomain.xml");
 &lt;/script&gt;
 </programlisting>
 <para>
 Where "server" is the name of the directory in which the crossdomain file resides.
 </para>
+<note>
 <para>
-Note also that some versions of browsers do not recognize the
+Older versions of the Flash player do not recognize the
 crossdomain.xml file when asked to do POST requests, but do recognize it for
-querystrings.  If this situation arises, the user will have to upgrade to an accommodating browser in order to make POSTs.
+querystrings.  If this situation arises, you will have to upgrade your Flash player to version 7,0,68,0 or higher in order to make POSTs.
 </para>
-<para/></section><section><title condition="dhtml">Restrictions on DHTML</title>
+<para/>
+</note>
+</section><section><title condition="dhtml">Restrictions on DHTML</title>
 <para>
 In SOLO applications compiled to DHTML, the application and the data do not originate at the same URL, the data load will fail. This is a consequence of the XMLHTTPRequest() object, which enforces this policy. There are browser-specific workarounds to this problem, but they are nonstandard and not recommended. 
 </para>

Modified: openlaszlo/branches/paperpie/docs/src/developers/text.dbk
===================================================================
--- openlaszlo/branches/paperpie/docs/src/developers/text.dbk	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/docs/src/developers/text.dbk	2007-11-05 23:35:46 UTC (rev 7140)
@@ -1,5 +1,6 @@
 <chapter id="text">
   <title>Text Views</title>
+  <!-- removed commented out code examples that the build ignored. IORIO 31 oct 2007 -->
   <para>This section describes the 
   <indexterm>
     <primary>text</primary>
@@ -225,21 +226,6 @@
           </textobject>
         </programlisting>
       </example>
-      <?example role="live-example"><title>setting font, fonstyle and fontsize</title><programlisting role="lzx-embednew"><filename>text-$1.lzx</filename><parameter/><code>
-      &lt;canvas height="50"&gt;
-        &lt;simplelayout axis="y"/&gt;
-        &lt;text fontstyle="bold"&gt;Default bold&lt;/text&gt;
-        &lt;text fontstyle="italic"&gt;Default italic&lt;/text&gt;
-        &lt;text fontstyle="bold italic"&gt;Default bold italic&lt;/text&gt;
-      &lt;/canvas&gt;
-      </code></programlisting><programlisting>
-      &lt;canvas height="50"&gt;
-        &lt;simplelayout axis="y"/&gt;
-        &lt;text fontstyle="bold"&gt;Default bold&lt;/text&gt;
-        &lt;text fontstyle="italic"&gt;Default italic&lt;/text&gt;
-        &lt;text fontstyle="bold italic"&gt;Default bold italic&lt;/text&gt;
-      &lt;/canvas&gt;
-      </programlisting><?lzx-edit programs/text-$1.lzx></example?>
       <para>Within the text content, HTML tags may also be
       used:</para>
       <example role="live-example">
@@ -250,21 +236,6 @@
           </textobject>
         </programlisting>
       </example>
-      <?example role="live-example"><title>HTML tags within text</title><programlisting role="lzx-embednew"><filename>text-$2.lzx</filename><parameter/><code>
-      &lt;canvas height="50"&gt;
-        &lt;simplelayout axis="y"/&gt;
-        &lt;text&gt;&lt;b&gt;Default bold&lt;/b&gt;&lt;/text&gt;
-        &lt;text&gt;&lt;i&gt;Default italic&lt;/i&gt;&lt;/text&gt;
-        &lt;text fontstyle="bold"&gt;&lt;i&gt;Default bold italic&lt;/i&gt;&lt;/text&gt;
-      &lt;/canvas&gt;    
-      </code></programlisting><programlisting>
-      &lt;canvas height="50"&gt;
-        &lt;simplelayout axis="y"/&gt;
-        &lt;text&gt;&lt;b&gt;Default bold&lt;/b&gt;&lt;/text&gt;
-        &lt;text&gt;&lt;i&gt;Default italic&lt;/i&gt;&lt;/text&gt;
-        &lt;text fontstyle="bold"&gt;&lt;i&gt;Default bold italic&lt;/i&gt;&lt;/text&gt;
-      &lt;/canvas&gt;    
-      </programlisting><?lzx-edit programs/text-$2.lzx></example?>
       <para>Text can contain preformatted regions, where linebreaks
       and whitespace are preserved:</para>
       <example role="live-example">
@@ -275,31 +246,6 @@
           </textobject>
         </programlisting>
       </example>
-      <?example role="live-example"><title>Preformatted text</title><programlisting role="lzx-embednew"><filename>text-$3.lzx</filename><parameter/><code>
-      &lt;canvas height="80"&gt;
-        &lt;text id="ttext" multiline="true" height="300"&gt;
-          This text field contains some preformatted text
-          &lt;pre&gt;
-          This is a line of text.
-
-          here was a blank line before this line.
-          And another line of text.
-          &lt;/pre&gt;
-         &lt;/text&gt;
-      &lt;/canvas&gt;
-      </code></programlisting><programlisting>
-      &lt;canvas height="80"&gt;
-        &lt;text id="ttext" multiline="true" height="300"&gt;
-          This text field contains some preformatted text
-          &lt;pre&gt;
-          This is a line of text.
-
-          here was a blank line before this line.
-          And another line of text.
-          &lt;/pre&gt;
-         &lt;/text&gt;
-      &lt;/canvas&gt;
-      </programlisting><?lzx-edit programs/text-$3.lzx></example?>
       <para>Within a text element, the HTML 
       <emphasis role="i">font</emphasis>tag supports the 
       <indexterm>
@@ -325,35 +271,6 @@
           </textobject>
         </programlisting>
       </example>
-      <?example role="live-example"><title>Setting text colors using RGB strings</title><programlisting role="lzx-embednew"><filename>text-$4.lzx</filename><parameter/><code>
-      &lt;canvas height="60"&gt;
-        &lt;simplelayout axis="y"/&gt;
-
-        &lt;font name="Times Roman" src="bitstream-vera-1.10/vera.ttf"/&gt;
-        
-        &lt;text height="30"&gt;
-          &lt;font face="Times Roman" size="24"&gt;Times Roman&lt;/font&gt;
-        &lt;/text&gt;
-        &lt;text bgcolor="#ffcccc"&gt;
-          &lt;font color="#FF0000"&gt;C&lt;/font&gt;&lt;font color="#FFFF00"&gt;O&lt;/font&gt;&lt;font color="#00FFCC"&gt;L&lt;/font
-          &gt;&lt;font color="#CC00CC"&gt;O&lt;/font&gt;&lt;font color="#AABB00"&gt;R&lt;/font&gt;&lt;font color="#DDA00A"&gt;S&lt;/font&gt;
-        &lt;/text&gt;
-      &lt;/canvas&gt;
-      </code></programlisting><programlisting>
-      &lt;canvas height="60"&gt;
-        &lt;simplelayout axis="y"/&gt;
-
-        &lt;font name="Times Roman" src="bitstream-vera-1.10/vera.ttf"/&gt;
-        
-        &lt;text height="30"&gt;
-          &lt;font face="Times Roman" size="24"&gt;Times Roman&lt;/font&gt;
-        &lt;/text&gt;
-        &lt;text bgcolor="#ffcccc"&gt;
-          &lt;font color="#FF0000"&gt;C&lt;/font&gt;&lt;font color="#FFFF00"&gt;O&lt;/font&gt;&lt;font color="#00FFCC"&gt;L&lt;/font
-          &gt;&lt;font color="#CC00CC"&gt;O&lt;/font&gt;&lt;font color="#AABB00"&gt;R&lt;/font&gt;&lt;font color="#DDA00A"&gt;S&lt;/font&gt;
-        &lt;/text&gt;
-      &lt;/canvas&gt;
-      </programlisting><?lzx-edit programs/text-$4.lzx></example?>
       <para>If you wish to include HTML escape characters in the
       text value, you can use entity codes such as 
       <literal>&amp;amp;</literal>or 
@@ -369,15 +286,6 @@
           </textobject>
         </programlisting>
       </example>
-      <?example role="live-example"><title>Escaping HTML characters</title><programlisting role="lzx-embednew"><filename>text-$5.lzx</filename><parameter/><code>
-      &lt;canvas height="20"&gt;
-        &lt;text bgcolor="#ffcccc"&gt;&lt;![CDATA[&lt;b&gt;this text shouldn't be bold&lt;/b&gt;]]&gt;&lt;/text&gt; 
-      &lt;/canvas&gt;
-      </code></programlisting><programlisting>
-      &lt;canvas height="20"&gt;
-        &lt;text bgcolor="#ffcccc"&gt;&lt;![CDATA[&lt;b&gt;this text shouldn't be bold&lt;/b&gt;]]&gt;&lt;/text&gt; 
-      &lt;/canvas&gt;
-      </programlisting><?lzx-edit programs/text-$5.lzx></example?>
       <para />
       <section>
         <title>Text Scrolling</title>
@@ -482,7 +390,7 @@
       <!--unknown tag: inputtext-->
       is used for input fields where the user can type or edit text
       interactively.</para>
-      <para />
+   <!-- fix LPP-5000: minor clarification of examples -->
       <section>
         <title>Resizable text fields</title>
         <!-- changed to reflect the fact that resize is now true by default -->
@@ -503,50 +411,18 @@
             </textobject>
           </programlisting>
         </example>
-        <?example role="live-example"><title>non-resizing text does not concatenate</title><programlisting role="lzx-embednew"><filename>text-$6.lzx</filename><parameter/><code>
-        &lt;canvas height="50" &gt;
-          &lt;simplelayout/&gt;
-          &lt;slider name="down" width="100" value="5000" minvalue="1000" maxvalue="100000"
-        keystep="1000"/&gt;
-          &lt;text text="${'Slider Value is '+parent.down.value+' nicely constrained'}"/&gt;
-        &lt;/canvas&gt;
-        </code></programlisting><programlisting>
-        &lt;canvas height="50" &gt;
-          &lt;simplelayout/&gt;
-          &lt;slider name="down" width="100" value="5000" minvalue="1000" maxvalue="100000"
-        keystep="1000"/&gt;
-          &lt;text text="${'Slider Value is '+parent.down.value+' nicely constrained'}"/&gt;
-        &lt;/canvas&gt;
-        </programlisting><?lzx-edit programs/text-$6.lzx></example?>
+
 <para>If you set 
         <literal>resize=true</literal> (the default), the field will expand to
         fit the text.</para>
         <example role="live-example">
-          <title>Using the 'resize' attribute</title>
+          <title>Resizing text expands</title>
           <programlisting language="lzx">
             <textobject>
               <textdata fileref="programs/text-$7.lzx" />
             </textobject>
           </programlisting>
         </example>
-        <?example role="live-example"><title>Setting the 'resize' attribute to 'true'</title><programlisting role="lzx-embednew"><filename>text-$7.lzx</filename><parameter/><code>
-
-        &lt;canvas height="50"&gt;
-          &lt;simplelayout/&gt;
-          &lt;slider name="down" width="100" value="5000" minvalue="1000" maxvalue="100000"
-        keystep="1000"/&gt;
-          &lt;text resize="true" text="${'Slider Value is '+parent.down.value+' nicely constrained'}"/&gt;
-        &lt;/canvas&gt;
-        </code></programlisting>
-<programlisting>
-
-        &lt;canvas height="50"&gt;
-          &lt;simplelayout/&gt;
-          &lt;slider name="down" width="100" value="5000" minvalue="1000" maxvalue="100000"
-        keystep="1000"/&gt;
-          &lt;text <emphasis role="em">resize="true"</emphasis> text="${'Slider Value is '+parent.down.value+' nicely constrained'}"/&gt;
-        &lt;/canvas&gt;
-        </programlisting><?lzx-edit programs/text-$7.lzx></example?>
         <para />
       </section>
     </section>
@@ -587,19 +463,6 @@
         </textobject>
       </programlisting>
     </example>
-    <?example role="live-example"><title>Text views</title><programlisting role="lzx-embednew"><filename>text-$8.lzx</filename><parameter/><code>
-    &lt;canvas height="125"&gt;
-      &lt;simplelayout/&gt;
-      &lt;text&gt;Hello World!&lt;/text&gt;
-      &lt;text text="Hello World!"/&gt;
-    &lt;/canvas&gt;
-    </code></programlisting><programlisting>
-    &lt;canvas height="125"&gt;
-      &lt;simplelayout/&gt;
-      &lt;text&gt;Hello World!&lt;/text&gt;
-      &lt;text text="Hello World!"/&gt;
-    &lt;/canvas&gt;
-    </programlisting><?lzx-edit programs/text-$8.lzx></example?>
        <!-- remove empty para tag LI LPP-4642 9/4/2007-->
       <!-- <para /> -->
   <!-- duplicate section id; the other looks correct LI LPP-4642 9/4/2007-->
@@ -647,43 +510,6 @@
           </textobject>
         </programlisting>
       </example>
-      <?example role="live-example"><title>Multiline text</title><programlisting role="lzx-embednew"><filename>text-$9.lzx</filename><parameter/><code>
-      &lt;canvas height="125"&gt;
-        &lt;simplelayout spacing="5"/&gt;
-        &lt;!-- Single line text, the default --&gt;
-        &lt;text bgcolor="#ffcccc"&gt;
-          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras
-          nibh. Quisque justo. Donec porta, wisi quis vehicula interdum,
-          augue dui pharetra lectus, non adipiscing purus nibh vitae purus.
-          &lt;/text&gt;
-
-          &lt;!-- Multiline text (without an explicit width, the width would be
-           sized to fit the entire string on a single line) --&gt;
-          &lt;text bgcolor="#ccccff" multiline="true" width="300" &gt;
-          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras
-          nibh. Quisque justo. Donec porta, wisi quis vehicula interdum,
-          augue dui pharetra lectus, non adipiscing purus nibh vitae purus.
-        &lt;/text&gt;
-      &lt;/canvas&gt;
-      </code></programlisting><programlisting>
-      &lt;canvas height="125"&gt;
-        &lt;simplelayout spacing="5"/&gt;
-        &lt;!-- Single line text, the default --&gt;
-        &lt;text bgcolor="#ffcccc"&gt;
-          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras
-          nibh. Quisque justo. Donec porta, wisi quis vehicula interdum,
-          augue dui pharetra lectus, non adipiscing purus nibh vitae purus.
-          &lt;/text&gt;
-
-          &lt;!-- Multiline text (without an explicit width, the width would be
-           sized to fit the entire string on a single line) --&gt;
-          &lt;text bgcolor="#ccccff" multiline="true" width="300" &gt;
-          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras
-          nibh. Quisque justo. Donec porta, wisi quis vehicula interdum,
-          augue dui pharetra lectus, non adipiscing purus nibh vitae purus.
-        &lt;/text&gt;
-      &lt;/canvas&gt;
-      </programlisting><?lzx-edit programs/text-$9.lzx></example?>
       <para>With multiline text, the automatic wrapping is always
       enabled. You can disable wrapping by setting the 
       <indexterm>
@@ -704,25 +530,6 @@
           </textobject>
         </programlisting>
       </example>
-      <?example role="live-example"><title>Multiline text with explicit linebreaks</title><programlisting role="lzx-embednew"><filename>text-$10.lzx</filename><parameter/><code>
-      &lt;canvas height="125"&gt;
-        &lt;simplelayout spacing="5"/&gt;
-        &lt;text bgcolor="#ccccff" multiline="true" width="400" &gt;
-          Lorem ipsum dolor sit amet, consectetuer adipiscing elit.&lt;br/&gt; Cras
-          nibh. Quisque justo. &lt;br/&gt;Donec porta, wisi quis vehicula interdum,
-          augue dui pharetra lectus, non adipiscing purus nibh vitae purus.
-        &lt;/text&gt;
-      &lt;/canvas&gt;
-      </code></programlisting><programlisting>
-      &lt;canvas height="125"&gt;
-        &lt;simplelayout spacing="5"/&gt;
-        &lt;text bgcolor="#ccccff" multiline="true" width="400" &gt;
-          Lorem ipsum dolor sit amet, consectetuer adipiscing elit.&lt;br/&gt; Cras
-          nibh. Quisque justo. &lt;br/&gt;Donec porta, wisi quis vehicula interdum,
-          augue dui pharetra lectus, non adipiscing purus nibh vitae purus.
-        &lt;/text&gt;
-      &lt;/canvas&gt;
-      </programlisting><?lzx-edit programs/text-$10.lzx></example?>
       <para>Below is a non-wrapping text field with explicit line
       breaks.</para>
       <example role="live-example">
@@ -733,25 +540,6 @@
           </textobject>
         </programlisting>
       </example>
-      <?example role="live-example"><title>Non-wrapping text with breaks</title><programlisting role="lzx-embednew"><filename>text-$11.lzx</filename><parameter/><code>
-      &lt;canvas height="125"&gt;
-        &lt;simplelayout spacing="5"/&gt;
-        &lt;text bgcolor="#ccccff" multiline="false" width="500" height="100" &gt;
-          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras&lt;br/&gt;
-          nibh. Quisque justo. Donec porta, wisi quis vehicula interdum,&lt;br/&gt;
-          augue dui pharetra lectus, non adipiscing purus nibh vitae purus.
-        &lt;/text&gt;
-      &lt;/canvas&gt;
-      </code></programlisting><programlisting>
-      &lt;canvas height="125"&gt;
-        &lt;simplelayout spacing="5"/&gt;
-        &lt;text bgcolor="#ccccff" multiline="false" width="500" height="100" &gt;
-          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras&lt;br/&gt;
-          nibh. Quisque justo. Donec porta, wisi quis vehicula interdum,&lt;br/&gt;
-          augue dui pharetra lectus, non adipiscing purus nibh vitae purus.
-        &lt;/text&gt;
-      &lt;/canvas&gt;
-      </programlisting><?lzx-edit programs/text-$11.lzx></example?>
       <para />
     </section>
     <section id="text.width-height">
@@ -784,43 +572,6 @@
           </textobject>
         </programlisting>
       </example>
-      <?example role="live-example"><title>Resizing text</title><programlisting role="lzx-embednew"><filename>text-$12.lzx</filename><parameter/><code>
-      &lt;canvas height="125"&gt;
-        &lt;debug x="400"/&gt;
-        &lt;simplelayout/&gt;
-        &lt;!-- Single line text, the default --&gt;
-        &lt;text id="t1" bgcolor="#ffcccc" resize="false"&gt;
-          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
-        &lt;/text&gt;
-        &lt;text id="t2" bgcolor="#ccffcc" resize="true"&gt;
-          Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
-        &lt;/text&gt;
-        &lt;button text="setText(...)"&gt;
-          &lt;handler name="onclick"&gt;
-            t1.setText('resize='+t1.resize);
-            t2.setText('resize='+t2.resize);
-          &lt;/handler&gt;
-        &lt;/button&gt;
-      &lt;/canvas&gt;
-      </code></programlisting><programlisting>
-      &lt;canvas height="125"&gt;
-        &lt;debug x="400"/&gt;
-        &lt;simplelayout/&gt;
-        &lt;!-- Single line text, the default --&gt;
-        &lt;text id="t1" bgcolor="#ffcccc" resize="false"&gt;
-          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
-        &lt;/text&gt;
-        &lt;text id="t2" bgcolor="#ccffcc" resize="true"&gt;
-          Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
-        &lt;/text&gt;
-        &lt;button text="setText(...)"&gt;
-          &lt;handler name="onclick"&gt;
-            t1.setText('resize='+t1.resize);
-            t2.setText('resize='+t2.resize);
-          &lt;/handler&gt;
-        &lt;/button&gt;
-      &lt;/canvas&gt;
-      </programlisting><?lzx-edit programs/text-$12.lzx></example?>
       <para />
     </section>
     <section id="text.selection">
@@ -844,29 +595,6 @@
           </textobject>
         </programlisting>
       </example>
-      <?example role="live-example"><title>Selectable text</title><programlisting role="lzx-embednew"><filename>text-$13.lzx</filename><parameter/><code>
-      &lt;canvas height="125"&gt;
-        &lt;simplelayout spacing="4"/&gt;
-        &lt;!-- Single line text, the default --&gt;
-        &lt;text id="t1" bgcolor="#ffcccc" selectable="true" resize="false"&gt;
-           I am selectable text. Select me!
-        &lt;/text&gt;
-        &lt;text id="t2" bgcolor="#ccffcc" resize="true"&gt;
-          I am not selectable text. Try to select me!
-        &lt;/text&gt;
-      &lt;/canvas&gt;
-      </code></programlisting><programlisting>
-      &lt;canvas height="125"&gt;
-        &lt;simplelayout spacing="4"/&gt;
-        &lt;!-- Single line text, the default --&gt;
-        &lt;text id="t1" bgcolor="#ffcccc" selectable="true" resize="false"&gt;
-           I am selectable text. Select me!
-        &lt;/text&gt;
-        &lt;text id="t2" bgcolor="#ccffcc" resize="true"&gt;
-          I am not selectable text. Try to select me!
-        &lt;/text&gt;
-      &lt;/canvas&gt;
-      </programlisting><?lzx-edit programs/text-$13.lzx></example?>
       <para />
     </section>
     <section>
@@ -1157,21 +885,6 @@
           </textobject>
         </programlisting>
       </example>
-      <?example role="live-example"><title>Basic use of &lt;img&gt; tag</title><programlisting role="lzx-embednew"><filename>text-$15.lzx</filename><parameter/><code>
-      &lt;canvas height="320" &gt;
-        &lt;text multiline="true" width="300" height="300"&gt;
-          Hello dear friends on the Red Planet! How is the Garden today?
-          &lt;img src="./images/horse-3.jpg"/&gt;
-        &lt;/text&gt;
-      &lt;/canvas&gt;
-      </code></programlisting><programlisting>
-      &lt;canvas height="320" &gt;
-        &lt;text multiline="true" width="300" height="300"&gt;
-          Hello dear friends on the Red Planet! How is the Garden today?
-          &lt;img src="./images/horse-3.jpg"/&gt;
-        &lt;/text&gt;
-      &lt;/canvas&gt;
-      </programlisting><?lzx-edit programs/text-$15.lzx></example?>
       <para>Notice that you cannot have an image in a text tag
       without also having text. Watch what happens when we comment
       out the text:</para>
@@ -1183,21 +896,6 @@
           </textobject>
         </programlisting>
       </example>
-      <?example role="live-example"><title>You must include text with images</title><programlisting role="lzx-embednew"><filename>text-$16.lzx</filename><parameter/><code>
-      &lt;canvas height="220" &gt;
-        &lt;text multiline="true" width="200" height="200"&gt;
-          &lt;!--Hello dear friends on the Red Planet! How is the Garden today?--&gt;
-          &lt;img src="./images/horse-3.jpg"/&gt;
-        &lt;/text&gt;
-      &lt;/canvas&gt;
-      </code></programlisting><programlisting>
-      &lt;canvas height="220" &gt;
-        &lt;text multiline="true" width="200" height="200"&gt;
-          <emphasis role="em">&lt;!--Hello dear friends on the Red Planet! How is the Garden today?--&gt;</emphasis>
-          &lt;img src="./images/horse-3.jpg"/&gt;
-        &lt;/text&gt;
-      &lt;/canvas&gt;
-      </programlisting><?lzx-edit programs/text-$16.lzx></example?>
       <para>By giving values to the 
       <indexterm>
         <primary>height</primary>
@@ -1220,23 +918,6 @@
           </textobject>
         </programlisting>
       </example>
-      <?example role="live-example"><title>Scaling an image included in text</title><programlisting role="lzx-embednew"><filename>text-$17.lzx</filename><parameter/><code>
-      &lt;canvas height="100"&gt;  
-        &lt;text multiline="true" height="80"&gt;
-          Some text and
-          &lt;img src="./images/horse-3.jpg" width="20" height="20" align="left"/&gt;
-          some more text
-        &lt;/text&gt;
-      &lt;/canvas&gt;
-      </code></programlisting><programlisting>
-      &lt;canvas height="100"&gt;  
-        &lt;text multiline="true" height="80"&gt;
-          Some text and
-          &lt;img src="./images/horse-3.jpg" width="20" height="20" align="left"/&gt;
-          some more text
-        &lt;/text&gt;
-      &lt;/canvas&gt;
-      </programlisting><?lzx-edit programs/text-$17.lzx></example?>
       <para>You can position the included image by setting the 
       <indexterm>
         <primary>align</primary>
@@ -1250,23 +931,6 @@
           </textobject>
         </programlisting>
       </example>
-      <?example role="live-example"><title>Scaled and left-aligned image</title><programlisting role="lzx-embednew"><filename>text-$18.lzx</filename><parameter/><code>
-      &lt;canvas height="350"&gt;  
-        &lt;text multiline="true" height="300"&gt;
-          Some text and
-          &lt;img src="./images/horse-3.jpg" width="20" height="20" align="left"/&gt;
-          some more text
-        &lt;/text&gt;
-      &lt;/canvas&gt;
-      </code></programlisting><programlisting>
-      &lt;canvas height="350"&gt;  
-        &lt;text multiline="true" height="300"&gt;
-          Some text and
-          &lt;img src="./images/horse-3.jpg" width="20" height="20" align="left"/&gt;
-          some more text
-        &lt;/text&gt;
-      &lt;/canvas&gt;
-      </programlisting><?lzx-edit programs/text-$18.lzx></example?>
       <para>You can include multiple 
       <indexterm>
         <primary>img</primary>
@@ -1288,59 +952,6 @@
           </textobject>
         </programlisting>
       </example>
-      <?example role="live-example"><title>Multiple images in text</title><programlisting role="lzx-embednew"><filename>text-$19.lzx</filename><parameter/><code>
-      &lt;canvas&gt;
-        &lt;text multiline="true" width="100%"&gt;
-      Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce ligula. Suspendisse pellentesque diam vel dolor. Nullam suscipit laoreet eros. Aliquam nulla massa, rutrum id, luctus vitae, consequat eu, ipsum. Donec hendrerit rhoncus erat. 
-          &lt;img src="./images/horse-3.jpg"/&gt;
-      Proin diam leo, vulputate id, ornare cursus, convallis eu, nisi. Vestibulum porttitor luctus dui. Nulla nisi arcu, pharetra at, molestie nec, porta a, leo. Sed congue ante molestie risus. Mauris blandit nulla a tortor. Quisque sed nulla. Nunc imperdiet, elit at faucibus lacinia, nibh augue tristique magna, a aliquam justo sapien eget enim. 
-          &lt;img src="./images/horse-3.jpg"/&gt;
-      Nullam mollis orci id tellus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur id mauris. Maecenas arcu. Donec nonummy mi a metus. 
-          &lt;img src="./images/horse-3.jpg" width="20" height="20" vspace="50"/&gt;
-      Morbi dignissim scelerisque libero. Donec id sapien id velit tristique interdum. Quisque faucibus sapien. Quisque porttitor. Mauris venenatis nunc id nunc. Nulla iaculis metus at ante. Suspendisse accumsan, mauris dapibus pretium laoreet, nibh purus imperdiet lectus, a euismod elit enim a mi. Morbi commodo lacus quis nisl. 
-          &lt;img src="./images/horse-3.jpg" align="left"/&gt;
-       Duis leo tortor, gravida eget, euismod non, ullamcorper quis, metus. Phasellus ornare facilisis metus. Aliquam at est.
-          &lt;img src="./images/horse-3.jpg" align="right"/&gt;
-      Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce ligula. Suspendisse pellentesque diam vel dolor. Nullam suscipit laoreet eros. Aliquam nulla massa, rutrum id, luctus vitae, consequat eu, ipsum. Donec hendrerit rhoncus erat. Phasellus eget massa sit amet lorem condimentum porta. Ut nec lorem. Pellentesque quam. Sed porttitor, elit vitae faucibus porta, enim nibh cursus augue, vitae iaculis enim lorem at eros. 
-          &lt;img src="./images/horse-3.jpg" width="20" height="20" hspace="50"/&gt;
-      Proin diam leo, vulputate id, ornare cursus, convallis eu, nisi. Vestibulum porttitor luctus dui. Nulla nisi arcu, pharetra at, molestie nec, porta a, leo. Sed congue ante molestie risus. 
-          &lt;img src="http:horse-3.jpg"/&gt;
-      Nullam mollis orci id tellus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur id mauris. Maecenas arcu. Donec nonummy mi a metus. Nulla facilisi. Aenean metus. Nullam vitae sem id risus accumsan luctus. Nam sit amet velit. Mauris ut est. Proin id sem ullamcorper pede luctus tristique. Pellentesque dapibus, neque et pellentesque tincidunt, sapien diam imperdiet ipsum, nec porttitor turpis lectus nec libero. Praesent ut elit.
-          &lt;img src="./images/horse-3.jpg" width="20" height="20" align="left"/&gt;
-      Morbi dignissim scelerisque libero. Donec id sapien id velit tristique interdum. Quisque faucibus sapien. Quisque porttitor. Mauris venenatis nunc id nunc. Nulla iaculis metus at ante.  Etiam adipiscing urna quis tellus. Nam aliquam vehicula arcu.
-          &lt;img src="./images/horse-3.jpg" width="20" height="20" vspace="50"/&gt;
-      Nunc malesuada. Curabitur tortor metus, malesuada et, suscipit ut, convallis ac, magna. Nam venenatis viverra ipsum. Phasellus dignissim sagittis urna. Phasellus cursus. Cras pede arcu, tempus a, consectetuer vel, faucibus fermentum, diam. Donec lacus. 
-      &lt;img src="./images/horse-3.jpg"/&gt;Proin diam leo, vulputate id, ornare cursus, convallis eu, nisi. Vestibulum porttitor luctus dui. Nulla nisi arcu, pharetra at, molestie nec, porta a, leo. Sed congue ante molestie risus. Mauris blandit nulla a tortor. Quisque sed nulla. Nunc imperdiet, elit at faucibus lacinia, nibh augue tristique magna, a aliquam justo sapien eget enim. In suscipit congue dolor. 
-      &lt;/text&gt;
-      &lt;scrollbar/&gt;
-      &lt;/canvas&gt;
-      </code></programlisting><programlisting>
-      &lt;canvas&gt;
-        &lt;text multiline="true" width="100%"&gt;
-      Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce ligula. Suspendisse pellentesque diam vel dolor. Nullam suscipit laoreet eros. Aliquam nulla massa, rutrum id, luctus vitae, consequat eu, ipsum. Donec hendrerit rhoncus erat. 
-          &lt;img src="./images/horse-3.jpg"/&gt;
-      Proin diam leo, vulputate id, ornare cursus, convallis eu, nisi. Vestibulum porttitor luctus dui. Nulla nisi arcu, pharetra at, molestie nec, porta a, leo. Sed congue ante molestie risus. Mauris blandit nulla a tortor. Quisque sed nulla. Nunc imperdiet, elit at faucibus lacinia, nibh augue tristique magna, a aliquam justo sapien eget enim. 
-          &lt;img src="./images/horse-3.jpg"/&gt;
-      Nullam mollis orci id tellus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur id mauris. Maecenas arcu. Donec nonummy mi a metus. 
-          &lt;img src="./images/horse-3.jpg" width="20" height="20" vspace="50"/&gt;
-      Morbi dignissim scelerisque libero. Donec id sapien id velit tristique interdum. Quisque faucibus sapien. Quisque porttitor. Mauris venenatis nunc id nunc. Nulla iaculis metus at ante. Suspendisse accumsan, mauris dapibus pretium laoreet, nibh purus imperdiet lectus, a euismod elit enim a mi. Morbi commodo lacus quis nisl. 
-          &lt;img src="./images/horse-3.jpg" align="left"/&gt;
-       Duis leo tortor, gravida eget, euismod non, ullamcorper quis, metus. Phasellus ornare facilisis metus. Aliquam at est.
-          &lt;img src="./images/horse-3.jpg" align="right"/&gt;
-      Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce ligula. Suspendisse pellentesque diam vel dolor. Nullam suscipit laoreet eros. Aliquam nulla massa, rutrum id, luctus vitae, consequat eu, ipsum. Donec hendrerit rhoncus erat. Phasellus eget massa sit amet lorem condimentum porta. Ut nec lorem. Pellentesque quam. Sed porttitor, elit vitae faucibus porta, enim nibh cursus augue, vitae iaculis enim lorem at eros. 
-          &lt;img src="./images/horse-3.jpg" width="20" height="20" hspace="50"/&gt;
-      Proin diam leo, vulputate id, ornare cursus, convallis eu, nisi. Vestibulum porttitor luctus dui. Nulla nisi arcu, pharetra at, molestie nec, porta a, leo. Sed congue ante molestie risus. 
-          &lt;img src="http:horse-3.jpg"/&gt;
-      Nullam mollis orci id tellus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur id mauris. Maecenas arcu. Donec nonummy mi a metus. Nulla facilisi. Aenean metus. Nullam vitae sem id risus accumsan luctus. Nam sit amet velit. Mauris ut est. Proin id sem ullamcorper pede luctus tristique. Pellentesque dapibus, neque et pellentesque tincidunt, sapien diam imperdiet ipsum, nec porttitor turpis lectus nec libero. Praesent ut elit.
-          &lt;img src="./images/horse-3.jpg" width="20" height="20" align="left"/&gt;
-      Morbi dignissim scelerisque libero. Donec id sapien id velit tristique interdum. Quisque faucibus sapien. Quisque porttitor. Mauris venenatis nunc id nunc. Nulla iaculis metus at ante.  Etiam adipiscing urna quis tellus. Nam aliquam vehicula arcu.
-          &lt;img src="./images/horse-3.jpg" width="20" height="20" vspace="50"/&gt;
-      Nunc malesuada. Curabitur tortor metus, malesuada et, suscipit ut, convallis ac, magna. Nam venenatis viverra ipsum. Phasellus dignissim sagittis urna. Phasellus cursus. Cras pede arcu, tempus a, consectetuer vel, faucibus fermentum, diam. Donec lacus. 
-      &lt;img src="./images/horse-3.jpg"/&gt;Proin diam leo, vulputate id, ornare cursus, convallis eu, nisi. Vestibulum porttitor luctus dui. Nulla nisi arcu, pharetra at, molestie nec, porta a, leo. Sed congue ante molestie risus. Mauris blandit nulla a tortor. Quisque sed nulla. Nunc imperdiet, elit at faucibus lacinia, nibh augue tristique magna, a aliquam justo sapien eget enim. In suscipit congue dolor. 
-      &lt;/text&gt;
-      &lt;scrollbar/&gt;
-      &lt;/canvas&gt;
-      </programlisting><?lzx-edit programs/text-$19.lzx></example?>
       <para />
     </section>
   </section>

Modified: openlaszlo/branches/paperpie/docs/src/reference/preface.dbk
===================================================================
--- openlaszlo/branches/paperpie/docs/src/reference/preface.dbk	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/docs/src/reference/preface.dbk	2007-11-05 23:35:46 UTC (rev 7140)
@@ -4,68 +4,142 @@
 * 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.5/docbookx.dtd">
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
 <preface id="ref.preface">
-<title>Preface</title>
-
-  <para>The OpenLaszlo Reference describes all of the public XML tags and JavaScript APIs in the LZX language. A companion document, the Contributor's Guide, includes descriptions of all private APIs, and other information of interest to contributors to the OpenLaszlo platform.</para>
-
-  <sect1><title>Other Sources of Information</title>
-    <simplelist>
-      <member><ulink url="../guide/tutorials.html" target="_blank"><citetitle>Tutorials</citetitle></ulink></member>
-      <member><ulink url="../guide/index.html" target="_blank"><citetitle>Developers Guide</citetitle></ulink></member>
-      <member><ulink url="../../laszlo-explorer/" target="_blank"><citetitle>Laszlo Explorer</citetitle></ulink></member>
-      <member><ulink url="http://www.openlaszlo.org/community" target="_blank"><citetitle>OpenLaszlo Community</citetitle></ulink></member>
-      <member><ulink url="http://forum.openlaszlo.org" target="_blank"><citetitle>Developer Forums</citetitle></ulink></member>
-    </simplelist>
-  </sect1>
-  
-  <sect1><title>Using the Reference</title>
-  
-    <sect2><title>Section Organization</title>
-      <para>
-      The Reference Guide is divided into chapters, each describing a distinct category of programming interfaces.
-      Each chapter contains a number of sub-chapters, corresponding to sub-categories of APIs, and each sub-chapter contains entries for each of those APIs.
-      </para>
-      <para>
-      Each reference entry contains a title (with an optional short description), a synopsis (floated to the right of the page in HTML), an optional Usage section, a Description, followed by a Details section. 
-      Each of these is pretty self-explanatory except for the Details section, which is described in the next section.
-      </para>
-      <para>
-      </para>
-    </sect2>
-
-    <sect2><title>Reference Entry Details Section</title>
-
-      <para>
-      The Details section contains information about the methods and properties of each LZX tag-class. 
-      Each method or property is described using both LZX syntax and JavaScript syntax. 
-      </para>
-      <para>
-      Fully understanding a method or property entry requires understanding a bit about how LZX tags correspond to JavaScript classes.
-      Almost every LZX tag in the language -- and every LZX class declared in your program -- is implemented under the covers as a JavaScript class.
-      An LZX tag's methods and attributes correspond to JavaScript methods and properties. LZX's events and handlers correspond to more complex JavaScript constructs.
-      </para>
-
-      <para>
-      Certain information about a class or its methods or properties can only be described using JavaScript syntax. 
-      For example, an item can be public, private, or protected (meaning that it is only visible to a subclass); this information is given as a modifier to the JavaScript item declaration.
-      </para>
-      
-      <sect3><title>LZX and JavaScript Types</title>
+  <title>Preface</title>
+  <para>The OpenLaszlo Reference describes all of the public XML
+  tags and JavaScript APIs in the LZX language. A companion
+  document, the Contributor's Guide, includes descriptions of all
+  private APIs, and other information of interest to contributors
+  to the OpenLaszlo platform.</para>
+  <sect1>
+    <title>Other Sources of Information</title>
+    <itemizedlist>
+      <listitem>
         <para>
-        Certain parts of the LZX language are actually written in JavaScript, so LZX type information given for these entries in the Reference Guide must be inferred from the original JavaScript type declaration. 
-        All other portions of LZX -- including your application source -- are of course written in LZX, so JavaScript type information given in the Reference Guide for those portions (useful when writing scripts) much be inferred from any typing information given in the LZX source.
+        <ulink url="../guide/index.html" target="_blank">Developers
+        Guide</ulink>: targeted at software developers who have
+        familiarity with the concepts of object-oriented
+        programming as implemented in languages such as Java, C++,
+        or JavaScript, and with the fundamentals of XML data
+        formats, including scores of live, editable examples</para>
+        <itemizedlist>
+          <listitem>
+            <para>
+            <ulink url="../developers/tutorials.html"
+            target="_blank">Tutorials</ulink>: part of the
+            OpenLaszlo Application Developer's Guide, the tutorials
+            present simple, live examples that you can edit and run
+            to help you become more familiar with OpenLaszlo
+            concepts.</para>
+          </listitem>
+        </itemizedlist>
+      </listitem>
+      <listitem>
+        <para>
+          <ulink url="../component-design/">OpenLaszlo Components
+          Guide</ulink>: a complete description of the core set of customizable user interface devices included with OpenLaszlo
         </para>
-
+      </listitem>
+      <listitem>
         <para>
-        LZX types are mostly advisory, but can have an effect on program execution.
-        See the <a href="../guide/methods-events-attributes.html#d0e18610">Attribute Types</a> section in the Developer's Guide for more information on this.
+          <ulink url="../deployers/">OpenLaszlo System
+          Administrator's Guide</ulink>: how to put OpenLaszlo applications on the web
         </para>
+      </listitem>
+      <listitem>
+        <para>
+          <ulink url="../../laszlo-explorer/" target="_blank">
+          Laszlo Explorer</ulink>: all the documentation listed above, and:
+        </para>
+        <itemizedlist>
+          <listitem>
+            <para>Demos: rich internet applications that show unity
+            of design</para>
+          </listitem>
+          <listitem>
+            <para>OpenLaszlo in Ten Minutes: an interactive guided
+            tour to get you started</para>
+          </listitem>
+          <listitem>
+            <para>Small Applications: shorter programs that
+            illustrate specific aspects of OpenLaszlo
+            development</para>
+          </listitem>
+          <listitem>
+            <para>Components: an illustrated compendium of
+            OpenLaszlo's prebuilt, user-extendable objects</para>
+          </listitem>
+       </itemizedlist>
+      </listitem>
+      <listitem>
+        <para>
+          <ulink url="http://www.openlaszlo.org/community"
+          target="_blank">OpenLaszlo Community</ulink>: a way for you to get involved in OpenLaszlo development and support
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          <ulink url="http://forum.openlaszlo.org" target="_blank">
+          Developer Forums</ulink>: discussion lists about all things OpenLaszlo
+        </para>
+      </listitem>
+    </itemizedlist>
+  </sect1>
+  <sect1>
+    <title>Using the Reference</title>
+    <sect2>
+      <title>Section Organization</title>
+      <para>The Reference Guide is divided into chapters, each
+      describing a distinct category of programming interfaces.
+      Each chapter contains a number of sub-chapters, corresponding
+      to sub-categories of APIs, and each sub-chapter contains
+      entries for each of those APIs.</para>
+      <para>Each reference entry contains a title (with an optional
+      short description), a synopsis (floated to the right of the
+      page in HTML), an optional Usage section, a Description,
+      followed by a Details section. Each of these is pretty
+      self-explanatory except for the Details section, which is
+      described in the next section.</para>
+      <para></para>
+    </sect2>
+    <sect2>
+      <title>Reference Entry Details Section</title>
+      <para>The Details section contains information about the
+      methods and properties of each LZX tag-class. Each method or
+      property is described using both LZX syntax and JavaScript
+      syntax.</para>
+      <para>Fully understanding a method or property entry requires
+      understanding a bit about how LZX tags correspond to
+      JavaScript classes. Almost every LZX tag in the language --
+      and every LZX class declared in your program -- is
+      implemented under the covers as a JavaScript class. An LZX
+      tag's methods and attributes correspond to JavaScript methods
+      and properties. LZX's events and handlers correspond to more
+      complex JavaScript constructs. How to combine JavaSaript and LZX
+      tags is described in more detail in <xref linkend="combine-tags-script" />.</para>
+      <para>Certain information about a class or its methods or
+      properties can only be described using JavaScript syntax. For
+      example, an item can be public, private, or protected
+      (meaning that it is only visible to a subclass); this
+      information is given as a modifier to the JavaScript item
+      declaration.</para>
+      <sect3>
+        <title>LZX and JavaScript Types</title>
+        <para>Certain parts of the LZX language are actually
+        written in JavaScript, so LZX type information given for
+        these entries in the Reference Guide must be inferred from
+        the original JavaScript type declaration. All other
+        portions of LZX -- including your application source -- are
+        of course written in LZX, so JavaScript type information
+        given in the Reference Guide for those portions (useful
+        when writing scripts) much be inferred from any typing
+        information given in the LZX source.</para>
+        <para>LZX types are mostly advisory, but can have an effect
+        on program execution. See the 
+        <xref linkend="attribute-types" /> in the OpenLaszlo Application Developer's Guide for
+        more information.</para>
       </sect3>
-
     </sect2>
-
   </sect1>
-  
 </preface>

Modified: openlaszlo/branches/paperpie/laszlo-explorer/coverpages/getting_started.html
===================================================================
--- openlaszlo/branches/paperpie/laszlo-explorer/coverpages/getting_started.html	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/laszlo-explorer/coverpages/getting_started.html	2007-11-05 23:35:46 UTC (rev 7140)
@@ -59,7 +59,7 @@
       <div class="desc-short">Use a text editor such as Notepad to edit text files in an application directory on your computer, 
 and then type the localhost URL for these text files into the browser address.  The name of the application
 directory on your system depends on how the OpenLaszlo Server has been installed and configured, as described 
-<a href="../../docs/guide/program-development.html#program-development.where-to-put-files">here.</a></div>
+<a href="../../docs/developers/program-development.html#program-development.where-to-put-files">here</a>.</div>
     </li>
   </ol>
 

Modified: openlaszlo/branches/paperpie/lps/admin/solo-deploy.jsp
===================================================================
--- openlaszlo/branches/paperpie/lps/admin/solo-deploy.jsp	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/lps/admin/solo-deploy.jsp	2007-11-05 23:35:46 UTC (rev 7140)
@@ -321,6 +321,12 @@
      // e.g., demos/amazon
      File appdir = new File(ctx.getRealPath(appUrl)).getParentFile();
 
+
+     // Keep track of which files we have output to the zip archive, so we don't
+     // write any duplicate entries.
+     HashSet zippedfiles = new HashSet();
+
+
      // These are the files to include in the ZIP file
      ArrayList filenames = new ArrayList();
      // LPS includes, (originally copied from /lps/includes/*)
@@ -345,24 +351,15 @@
          htmlfile = new File(appUrl).getName()+".html";
 
          byte lbytes[] = lzhistwrapper.getBytes();
-         //Write out a copy of the lzhistory wrapper as appname.lzx.html
-         zout.putNextEntry(new ZipEntry(htmlfile));
-         zout.write(lbytes, 0, lbytes.length);
-         zout.closeEntry();
 
+         copyByteArrayToZipFile(zout, lbytes, htmlfile, zippedfiles);
+
          // Compress the include files
          for (int i=0; i<filenames.size(); i++) {
-             FileInputStream in = new FileInputStream(basedir + "/" + (String) filenames.get(i));
+             String srcfile = basedir + "/" + (String) filenames.get(i);
              // Add ZIP entry to output stream.
-             zout.putNextEntry(new ZipEntry((String) filenames.get(i)));
-             // Transfer bytes from the file to the ZIP file
-             int len;
-             while ((len = in.read(buf)) > 0) {
-                 zout.write(buf, 0, len);
-             }
-             // Complete the entry
-             zout.closeEntry();
-             in.close();
+             String dstfile = (String) filenames.get(i);
+             copyFileToZipFile(zout, srcfile, dstfile, zippedfiles);
          }
 
      // track how big the file is, check that we don't write more than some limit
@@ -370,25 +367,10 @@
 
          // Compress the app files
          for (int i=0; i<appfiles.size(); i++) {
-             // skip the appname.lzx.html if it exists, since we just created a new
-             // one in the zip archive.
-             String fname = (String) appfiles.get(i);
-             if (fname.equals(htmlfile)) { continue; }
-
-             FileInputStream in = new FileInputStream((String) appfiles.get(i));
-             String zipname = fname.substring(appdir.getPath().length()+1);
-
+             String srcname = (String) appfiles.get(i);
+             String dstname = srcname.substring(appdir.getPath().length()+1);
              // Add ZIP entry to output stream.
-             zout.putNextEntry(new ZipEntry(zipname));
-             // Transfer bytes from the file to the ZIP file
-             int len;
-             while ((len = in.read(buf)) > 0) {
-             contentSize += len;
-                 zout.write(buf, 0, len);
-             }
-             // Complete the entry
-             zout.closeEntry();
-             in.close();
+             copyFileToZipFile(zout, srcname, dstname, zippedfiles);
 
              if (contentSize > maxZipFileSize) {
                  throw new IOException("file length exceeds max of "+ (maxZipFileSize/1000000) +"MB");
@@ -542,4 +524,49 @@
     }
   }
 
+public void copyByteArrayToZipFile (ZipOutputStream zout,
+                               byte lbytes[],
+                               String dstfile,
+                               Set zipped)
+  throws java.io.IOException
+{
+    zout.putNextEntry(new ZipEntry(fixSlashes(dstfile)));
+    zout.write(lbytes, 0, lbytes.length);
+    zout.closeEntry();
+    zipped.add(fixSlashes(dstfile));
+}
+
+
+
+public void copyFileToZipFile (ZipOutputStream zout,
+                               String srcfile,
+                               String dstfile,
+                               Set zipped)
+  throws java.io.IOException, java.io.FileNotFoundException {
+    String dstfixed = fixSlashes(dstfile);
+    if (zipped.contains(dstfixed)) {
+        return;
+    }
+    FileInputStream in = new FileInputStream(srcfile);
+    // Add ZIP entry to output stream.
+    zout.putNextEntry(new ZipEntry(dstfixed));
+    // Transfer bytes from the file to the ZIP file
+    int len;
+    byte[] buf = new byte[1024];
+    while ((len = in.read(buf)) > 0) {
+        zout.write(buf, 0, len);
+    }
+    // Complete the entry
+    zout.closeEntry();
+    in.close();
+    zipped.add(dstfixed);
+}
+
+
+public String fixSlashes (String path) {
+       return(path.replace('\\', '/'));
+}
+
+
+
 %>

Modified: openlaszlo/branches/paperpie/lps/admin/solo-dhtml-deploy.jsp
===================================================================
--- openlaszlo/branches/paperpie/lps/admin/solo-dhtml-deploy.jsp	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/lps/admin/solo-dhtml-deploy.jsp	2007-11-05 23:35:46 UTC (rev 7140)
@@ -55,6 +55,8 @@
 int warnZipFileSize = 10000000; // warn at 10MB of content (before compression)
 boolean warned = false;
 
+
+
 String zipfilename = "";
 
 String whatpage = request.getParameter("whatpage");
@@ -170,6 +172,13 @@
 
         canvasElt = parse(canvasbuf.toString(), out);
 
+        String canvasdebug = canvasElt.getAttribute("debug");
+        if ("true".equals(canvasdebug)) {
+            %> <h2><font color="red">Note: your app has its canvas debug flag enabled, 
+                the Laszlo DHTML debugger curently does not work in a standalone SOLO deployment, continue?</h2>
+                <%
+        }
+        
         // load a copy of the HTML wrapper
         in = new BufferedReader(new InputStreamReader(wrapperUrl.openStream()));
         while ((str = in.readLine()) != null) 
@@ -363,6 +372,10 @@
      File appdir = new File(ctx.getRealPath(appUrl)).getParentFile();
      appdir = appdir.getCanonicalFile();
 
+     // Keep track of which files we have output to the zip archive, so we don't
+     // write any duplicate entries.
+     HashSet zippedfiles = new HashSet();
+
      // These are the files to include in the ZIP file
      ArrayList filenames = new ArrayList();
      // LPS includes, (originally copied from /lps/includes/*)
@@ -391,23 +404,15 @@
 
          byte lbytes[] = wrapper.getBytes();
          //Write out a copy of the lzhistory wrapper as appname.lzx.html
-         zout.putNextEntry(new ZipEntry(fixSlashes(htmlfile)));
-         zout.write(lbytes, 0, lbytes.length);
-         zout.closeEntry();
+         out.println("<br>copyFileToZipFile dstfixed="+htmlfile+" lookup "+zippedfiles.contains(htmlfile));
+         copyByteArrayToZipFile(zout, lbytes, htmlfile, zippedfiles);
 
          // Compress the include files
          for (int i=0; i<filenames.size(); i++) {
-             FileInputStream in = new FileInputStream(basedir + "/" + (String) filenames.get(i));
+             String srcfile = basedir + "/" + (String) filenames.get(i);
              // Add ZIP entry to output stream.
-             zout.putNextEntry(new ZipEntry(fixSlashes((String) filenames.get(i))));
-             // Transfer bytes from the file to the ZIP file
-             int len;
-             while ((len = in.read(buf)) > 0) {
-                 zout.write(buf, 0, len);
-             }
-             // Complete the entry
-             zout.closeEntry();
-             in.close();
+             String dstfile = (String) filenames.get(i);
+             copyFileToZipFile(zout, srcfile, dstfile, zippedfiles);
          }
 
         // Copy the DHTML LFC to lps/includes/LFC-dhtml.js
@@ -417,54 +422,12 @@
              String fname = (String) lfcfiles.get(i);
              if (!fname.matches(".*LFCdhtml.*.js")) { continue; }
              String stripped = fname.substring(basedir.getCanonicalPath().length()+1);
-             copyFileToZipFile(zout, fname, stripped, out);
+             copyFileToZipFile(zout, fname, stripped, zippedfiles);
          }
 
-     // track how big the file is, check that we don't write more than some limit
-     int contentSize = 0;
+         // track how big the file is, check that we don't write more than some limit
+         int contentSize = 0;
 
-         // Compress the app files
-         for (int i=0; i<appfiles.size(); i++) {
-             // skip the appname.lzx.html if it exists, since we just created a new
-             // one in the zip archive.
-             String fname = (String) appfiles.get(i);
-             if (fname.equals(htmlfile)) { continue; }
-
-             FileInputStream in = new FileInputStream((String) appfiles.get(i));
-             String zipname = fname.substring(appdir.getPath().length()+1);
-
-             // Add ZIP entry to output stream.
-             zout.putNextEntry(new ZipEntry(fixSlashes(zipname)));
-             // Transfer bytes from the file to the ZIP file
-             int len;
-             while ((len = in.read(buf)) > 0) {
-             contentSize += len;
-                 zout.write(buf, 0, len);
-             }
-             // Complete the entry
-             zout.closeEntry();
-             in.close();
-
-         if (contentSize > maxZipFileSize) {
-             throw new IOException("file length exceeds max of "+ (maxZipFileSize/1000000) +"MB");
-             }
-
-         if (contentSize > warnZipFileSize && !warned) {
-
-             warned = true;
-             %> 
-                <h3><font color="red">The zip file has had more than <%= warnZipFileSize / 1000000 %>MB of content added to it, perhaps this is what you intended, but remember that the SOLO deployment tool creates an
-archive of all files, recursively, from the directory that
-contains your specified application source file.  If your application source file
-is in a directory with other apps, this tool will create a zip that
-                     contains all those apps and their assets (and subdirectories) as well. 
-</h3>
-
-
-             <% }
-
-         }
-
          // Now make copies of all resources which live external to the app's home directory.
          // Look for <resolve> tags in stats:
          // <canvas>
@@ -473,25 +436,52 @@
 
          Element stats = getChild(canvasElt, "stats");
          NodeList elts = stats.getElementsByTagName("resolve");
-         // Remember which files we've zipped, to avoid dupes
-         HashMap paths = new HashMap();
          for (int i=0; i < elts.getLength(); i++) {
              Element res = (Element)elts.item(i);
              String src = res.getAttribute("src");
              String pathname = res.getAttribute("pathname");
-             if ("true".equals(paths.get(pathname))) { continue; }
+             String relativePathname = pathname.substring(basedir.getAbsolutePath().length() + 1);
+             String zip_pathname = "lps/resources/"+relativePathname;
+             if (zippedfiles.contains(zip_pathname)) { continue; }
              // compare the pathname that the resource resolved to with the app directory path 
              if (pathname.startsWith(appdir.getAbsolutePath())) {
                  // It's under the app directory, ignore, we copied it already in the appfiles
                  // code above.
              } else {
                  // Copy the resource file into lps/resources/serverroot-relative-pathname
-                 String relativePathname = pathname.substring(basedir.getAbsolutePath().length() + 1);
-                 copyFileToZipFile(zout, pathname, "lps/resources/"+relativePathname, out);
-                 paths.put(pathname, "true");
+                 copyFileToZipFile(zout, pathname, zip_pathname, zippedfiles);
              }
          }
 
+         // Compress the app files
+     for (int i=0; i<appfiles.size(); i++) {
+         String srcname = (String) appfiles.get(i);
+         String dstname = srcname.substring(appdir.getPath().length()+1);
+         // Add ZIP entry to output stream.
+         copyFileToZipFile(zout, srcname, dstname, zippedfiles);
+
+         if (contentSize > maxZipFileSize) {
+             throw new IOException("file length exceeds max of "+ (maxZipFileSize/1000000) +"MB");
+         }
+
+         if (contentSize > warnZipFileSize && !warned) {
+
+             warned = true;
+             %> 
+                 <h3><font color="red">The zip file has had more than <%= warnZipFileSize / 1000000 %>MB of content added to it, perhaps this is what you intended, but remember that the SOLO deployment tool creates an
+                      archive of all files, recursively, from the directory that
+                      contains your specified application source file.  If your application source file
+                      is in a directory with other apps, this tool will create a zip that
+                      contains all those apps and their assets (and subdirectories) as well. 
+                      </h3>
+
+
+                      <% }
+
+     }
+
+
+
          // Complete the ZIP file
          zout.close();
      } catch (IOException e) {
@@ -551,11 +541,32 @@
     }
 }
 
-public void copyFileToZipFile (ZipOutputStream zout, String srcfile, String dstfile, javax.servlet.jsp.JspWriter out)
+public void copyByteArrayToZipFile (ZipOutputStream zout,
+                               byte lbytes[],
+                               String dstfile,
+                               Set zipped)
+  throws java.io.IOException
+{
+    zout.putNextEntry(new ZipEntry(fixSlashes(dstfile)));
+    zout.write(lbytes, 0, lbytes.length);
+    zout.closeEntry();
+    zipped.add(fixSlashes(dstfile));
+}
+
+
+
+public void copyFileToZipFile (ZipOutputStream zout,
+                               String srcfile,
+                               String dstfile,
+                               Set zipped)
   throws java.io.IOException, java.io.FileNotFoundException {
+    String dstfixed = fixSlashes(dstfile);
+    if (zipped.contains(dstfixed)) {
+        return;
+    }
     FileInputStream in = new FileInputStream(srcfile);
     // Add ZIP entry to output stream.
-    zout.putNextEntry(new ZipEntry(fixSlashes(dstfile)));
+    zout.putNextEntry(new ZipEntry(dstfixed));
     // Transfer bytes from the file to the ZIP file
     int len;
     byte[] buf = new byte[1024];
@@ -565,6 +576,7 @@
     // Complete the entry
     zout.closeEntry();
     in.close();
+    zipped.add(dstfixed);
 }
 
 

Modified: openlaszlo/branches/paperpie/lps/components/base/basedatacombobox.lzx
===================================================================
--- openlaszlo/branches/paperpie/lps/components/base/basedatacombobox.lzx	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/lps/components/base/basedatacombobox.lzx	2007-11-05 23:35:46 UTC (rev 7140)
@@ -197,7 +197,7 @@
 
             var t = dp.xpathQuery(this.textdatapath);
             // if t is null, use default text (if it exists)
-            if( ( t == null || t.length == 0 ) && this.defaulttext['length'] > 0 )
+            if( ( t == null || t.length == 0 ) && this.defaulttext && this.defaulttext['length'] > 0 )
                t = this.defaulttext;
 
             if ( this._cbtext && (this.statictext == null) ) {

Modified: openlaszlo/branches/paperpie/lps/components/base/basegridrow.lzx
===================================================================
--- openlaszlo/branches/paperpie/lps/components/base/basegridrow.lzx	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/lps/components/base/basegridrow.lzx	2007-11-05 23:35:46 UTC (rev 7140)
@@ -41,7 +41,10 @@
         </method>
 
         <method name="setRegularColor" >
-            var pos = this.datapath.xpathQuery( 'position()' );
+            var pos = 0;
+            if (this.datapath != null) {
+                pos = this.datapath.xpathQuery( 'position()' );
+            }
             var nextColor = null;
             if ( pos % 2 == 0 )  nextColor = ownerGrid.bgcolor0;
             if ( pos % 2 == 1 )  nextColor = ownerGrid.bgcolor1;

Modified: openlaszlo/branches/paperpie/lps/components/lz/edittext.lzx
===================================================================
--- openlaszlo/branches/paperpie/lps/components/lz/edittext.lzx	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/lps/components/lz/edittext.lzx	2007-11-05 23:35:46 UTC (rev 7140)
@@ -105,7 +105,7 @@
         <!-- Sets the maxmimum number of characters which can be entered. -->
         <method name="setMaxlength" args="n">
           this.setAttribute('maxlength', n);
-          field.setMaxlength(n);
+          this.field.setMaxLength(n);
         </method>
 
 

Modified: openlaszlo/branches/paperpie/lps/includes/source/embednew.js
===================================================================
--- openlaszlo/branches/paperpie/lps/includes/source/embednew.js	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/lps/includes/source/embednew.js	2007-11-05 23:35:46 UTC (rev 7140)
@@ -118,6 +118,7 @@
         // for callbacks onload
         Lz._swfid = properties.id;
         dojo.flash.addLoadedListener(Lz._loaded);
+        dojo.flash.addLoadedListener(Lz.history.init)
         if (! Lz['setCanvasAttribute']) {
             Lz.setCanvasAttribute = Lz[properties.id].setCanvasAttribute;
         }
@@ -348,7 +349,7 @@
      * @param hist:Boolean value - if true, add a history event.
      */
     _setCanvasAttributeSWF: function (name, value, hist) {
-        if (this.loaded) {
+        if (this.loaded && dojo.flash.comm['callMethod']) {
             if (hist) {
                 Lz.history._store(name, value);
             } else {

Modified: openlaszlo/branches/paperpie/lps/includes/source/lzhistory.js
===================================================================
--- openlaszlo/branches/paperpie/lps/includes/source/lzhistory.js	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/lps/includes/source/lzhistory.js	2007-11-05 23:35:46 UTC (rev 7140)
@@ -170,7 +170,7 @@
         var _this = Lz.history;
         // TODO: send events to all apps
         if (h.length == 0 || h == _this._lasthash) return;
-        if (h.indexOf('_lz') != -1) {
+        if (Lz.loaded && h.indexOf('_lz') != -1) {
             // TODO: use rison
             _this._lasthash = h;
             h = h.substring(3);
@@ -229,4 +229,7 @@
         }
     }
 };
-window.onload = Lz.history.init;
+if (Lz.__BrowserDetect.isFirefox) {
+    // If this is present, then Firefox does not do its Javascript caching and onload will get fired when coming back to the page.  Thanks Jes! 
+    window.onunload = function() {};
+}

Modified: openlaszlo/branches/paperpie/test/lztest/lztest-class-impl.lzx
===================================================================
--- openlaszlo/branches/paperpie/test/lztest/lztest-class-impl.lzx	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/test/lztest/lztest-class-impl.lzx	2007-11-05 23:35:46 UTC (rev 7140)
@@ -50,7 +50,7 @@
 suiteSubclasses.testSub = function() {
 
      var LzSub = Class.make( "LzSub", null, 
-                       {initialize: function (){this.testAttr = true; this.accum = ""; }} );
+                       ['initialize', function (){this.testAttr = true; this.accum = ""; }] );
 
     LzSub.addProperty('testAttr2', "foo");
      LzSub.addProperty('testMethod', function (a) { this.accum = this.accum + a; });
@@ -73,10 +73,9 @@
 
     
     var LzSubSub = Class.make( "LzSubSub", LzSub, 
-                            {initialize: function () { 
-                                #pragma "methodName=initialize"
+                            ['initialize', function () { 
                                 super.initialize(); 
-                            }} );
+                            }] );
     LzSubSub.addProperty('testMethod', function (a) { 
         #pragma "methodName=testMethod"
       super.testMethod(a); });

Modified: openlaszlo/branches/paperpie/test/lztest/lztest-text.lzx
===================================================================
--- openlaszlo/branches/paperpie/test/lztest/lztest-text.lzx	2007-11-05 23:28:04 UTC (rev 7139)
+++ openlaszlo/branches/paperpie/test/lztest/lztest-text.lzx	2007-11-05 23:35:46 UTC (rev 7140)
@@ -124,6 +124,11 @@
   text1.setText('12345678901234567890');
   LzTestManager.assertEquals ("1234567890", text1.getText(), "LPP-2208: text1 maxlength not working");  
 
+  // Now change the maxLength and try again
+  text1.setMaxLength (8);
+  LzTestManager.assertEquals (8, text1.maxlength, "text1.maxlength failure");
+  LzTestManager.assertEquals ("12345678", text1.getText(), "LPP-4775: text1 maxlength not working");  
+
   // Use invalid characters (not in the pattern)
   text1.setText('1abc23def4');
   LzTestManager.assertEquals ("abcdef", text1.getText(), "LPP-2209: text1 pattern not working");  

Copied: openlaszlo/branches/paperpie/test/trycatch.lzx (from rev 7133, openlaszlo/trunk/test/trycatch.lzx)



More information about the Laszlo-checkins mailing list