JIGSAW 1.4d (01/10/2000)
Jigsaw is distributed as FREEWARE for NON-COMMERCIAL use.
This means that you are free to use this applet as much as you want to for "non-commercial" sites and you will not be asked to pay anything for the use of it. Commercial sites can also use the applet free of charge after requesting and receiving written permission from me.
I do not ask for, or accept, any payment for this applet or it's use !
Sounds like a good deal, that because it is !

I do ask the following,
    1. You just send me a quick mail message saying that you are using it.
    2. You send me the http address of your jigsaw page(s). 
       I like to look at these, it's nice to see how people are using it.
    3. If you do not want me to include your jigsaw pages in any links listing
       that I might make, please let me know. Otherwise I will assume that I can.
       (if you say no, then I will respect that).
    4. A link back to the puzzle homepage http://svwhite.com/games,
       would be appreciated, but is not a condition of the applets use.
    5. I ask that you do not redistribute the jigsaw applet either in part or as the
       the zip file without my permission.
and require that,
    1. All class and jar files MUST NOT be tampered with or modified in any way.
    2. All class and jar files MUST NOT be reverse engineered or decompiled.
    3. Commercials site MUST ask for, and receive written permission from me 
       BEFORE using the applet.
    4. Commercial users MUST include a clearly visible link back to
       This should be placed together with, and on the same page as, each game.
       Requests from commercial sites to be exempted from this should be sent via email
       to games@svwhite.com explaining why I should make an exception.
in addition,
    I do not accept responsibility or liability for any damage or loss caused either directly or indirectly 
    by the use of the applet or any component part. Neither do I accept any responsiblity or liability
    for any damage or loss caused by the download or extraction of any or all of the supplied files.
    This applet is supplied on an "as is" basis, I do not guarantee it's ability to function or it's
    fitness for use in any way. 
Commercial user's MUST ask for permission before using this applet. I DO NOT charge for this applet, but I do reserve the right to decide if I want to allow it's use on individual commercial sites. My decision on commercial sites is based on how you intend using the applet and the type of site.

The Jigsaw applet require's a Java 1.1 enabled browser !

There are NO seperate .class files contained in this zip file.
The "Jigsaw.jar" file is ALL that you need.
This contains all the necessary class files.
To use the applet you need to transfer the "Jigsaw.jar" file to the server.
You do not need to extract anything from the jar file.
The jar file is just a "wrapper" for the class files.
Most browsers understand what to do with jar files.

Changes in Jigsaw 1.4d
This version of the applet fix's a problem with the solved URL trigger where the "solved" URL would be triggered when the puzzle first starts loading.
(This feature was broken when I upgraded the image handler in Jigsaw 1.4b)
The descriptions in this file for RunURL and RunTarget were reversed. These have been corrected in this documentation.
Changes in Jigsaw 1.4c
This is a special version which has not been released.
Changes in Jigsaw 1.4
The image handler has been replaced.
What this means is that the rotate option now functions correctly (no more partially drawn pieces, especially when using jpeg images).
A message is displayed while the image is being loaded and another message displyed while the jigsaw pieces are being "cut". This information is nice for users who have a slow internet link (or if the image size is large).
The last "used" puzzle piece will remain on the top of the pile of pieces. This helps to stop pieces from being "lost".
I know that some people like the "lost" functionality, so this new can be switched back on using <param name=LosePieces value=true>.
When using the applet with "last piece on top" (ie; LosePieces not switched on), you can switch off the "auto display pieces" when the mouse moves over partially hidden pieces. This can make the applet look smoother. When you click on a piece it will then come into view (be placed on top of all other pieces). You can switch off the auto display partially hidden pieces by specifying, <param name=AutoShowPieces value=false>
Playing piece rotation using the "right" mouse button is now more responsive.
Changes in Jigsaw 1.3
The connector's (stubs & holes) can be automatically sized to suit the size of the jigsaw pieces by specifying a Connector size of -1. This will also give good results with very small jigsaw pieces.
I would recommend using this setting for all puzzles.
The range of connector sizes that can be created with this setting is also much greater than can be achieved setting the connector size manually. I have kept this restriction on manual settings to reduce the risk of problems caused by bad connector size settings.
All button text and the "Solved" text can now be changed.
The "Solve" button can be disabled.
The "Puzzle solved" text area is hidden until the puzzle is solved. This stops the puzzle pieces from being partly hidden when moved into the message region.
When the puzzle is solved it is possible to automatically trigger a URL and to target this to an existing browser frame.
The "KeepBoardClear" option is now much better. If this option is set and there is not enough space around the playing area to "honour" this, it will be automatically disabled to stop the applet from locking up (it used to keep on trying to place pieces away from the picture area).
The "Tidy" button will be disabled if it is not possible to keep the playing area clear since when this happens it is meaninless to try.
The "example4.html" file demonstrates the URL trigger and frame targeting.
the other examples have been slightly modified

The jigsaw will start with the picture broken up into pieces. If the mouse is moved over a piece, a highlight should be seen. It is then possible to move the piece by pressing the left mouse button and holding it down whilst "dragging" the selected piece.
If pieces can be rotated (see the "CanRotate" option) the selected piece can be rotated by clicking the right mouse button (Note that this is not a true rotation, but a flip and mirror sequence 1,2,3,4)
If the "KeepBoardClear" option is set. Pieces that are NOT placed fully inside the picture building area can be shuffled around by clicking on the "Tidy" button. This makes it easier to "Sort" through playing pieces that are not placed inside the building area.

The "Breakup" button does exactly that and breaks up the puzzle.
The "solve" button can be used to solve the puzzle.

When the puzzle is correctly solved, a message will appear on the top line. If this does not appear and the puzzle "seems" to be solved, it is usually because a piece is in the wrong place or is rotated into the wrong position. Another cause is that the background color has been set to black and the text colour has not been changed (or the colours have been set to similar values).

With the "LosePieces" switched on (=true), it is possible to "lose" pieces under other jigsaw pieces (just like real life eh?). If this happens you should move the visible pieces one at a time to try and find the lost piece.

Each time the jigsaw applet is started (not when you use the breakup button) the jigsaw will be cut up randomly. This means that the pieces may be cut differently each time.

The jar file, Jigsaw.jar should be moved to the directory where your HTML file is, and the following html code should be added to your HTML document and the parameter values replaced with your own.
    <applet archive=Jigsaw.jar code=Jigsaw.class width=500 height=450>
      <param name=Image              value="me.gif">
      <param name=ImgWidth           value=290>
      <param name=ImgHeight          value=290>
      <param name=Rows               value=4>
      <param name=Cols               value=4>

width=n This sets the width of the applet area.
height=n This sets the height of the applet area.
name=Rows value=n This sets the number of rows to use for the jigsaw.
name=Cols value=n This sets the number of columns to use for the jigsaw.
name=Image value="filename" This is the filename for the jigsaw image.
name=ImgWidth value="n" The desired width for the jigsaw picture.
(The image will be scaled to fit the width that you specify)
name=ImgHeight value="n" The desired height for the jigsaw picture.
(The image will be scaled to fit the height that you specify)

name=DimHelpImage value=n If this is set, a "dimmed" copy of the jigsaw picture will be used as a guide in the picture building area.
The higher the value, the greater the dimming effect.
name=HelpImageGrayed value=true If this is set and a dimmed guide image is used, the guide image will be converted to gray scale.
name=AutoSnap value=v This is used to make it easier to correctly place the playing pieces.
When plaing pieces are close to their correct location, they will be "snapped" into position.
The value can be between 0-15, where 15 snaps from the greatest distance.
name=KeepBoardClear value=true If set, this keeps playing pieces away from the picture building area when the jigsaw starts and when the breakup button is used.
name=Connector value=n This is used to modify the size of the connecting links.
If you create a jigsaw with large pieces and want larger connectors then increase the value.
The value can be between "-1" and "4"
"-1" set the connector to "auto size". (this is new)
I would recommend using this option instead of the old 0 to 4 values. Firstly, the range of connector sizes is much greater than the manual 0-4 settings. Secondly it reduces the possibility of creating puzzles with "bad" malformed connectors. And lastly you dont have to think about this setting if you are resizing the image or changing the number of rows/columns
NOTE: If using the values 0-4, care should be taken to ensure that this size is not too large for the puzzle pieces otherwise you may get incomplete connectors.
name=CanRotate value=true Allows the pieces to be "rotated" using the right mouse button and will randomly "rotate" pieces when breaking up the puzzle.
In reality, this "rotate" is a flip and mirror sequence rather than a real rotate.
name=PictureAlign value=align Set the alignment of the jigsaw building area.
top = aligns at the top right corner.
spaced = aligns at the top right corner but below the buttons.
bottom = aligns at the bottom right corner.
center = aligns at the center of the applet area.
You should take care that there is sufficient space (if using KeepBoardClear), to place the games pieces away from the play area. Otherwise the program may lock up trying to find valid locations for pieces (this is why I prefer right alignments over the center).
name=BgColor value="hex color" This sets the background color for the applet.
name=OuterFrameColor value="hex color" This sets the color for the applets frame.
name=InnerFrameColor value="hex color" This sets the color for the frame around the picture building area.
name=BoardColor value="hex color" This is the color for the jigsaw assembly area if a dimmed guide image is not used.
name=SelectColor value="hex color" This sets the color for the "mouse over piece" highlighting rectangle.
name=TextColor value="hex color" This sets the color for the "jigsaw completed" text.
(remember to set this if you use a black/dark background)
name=AllowSolve value="false" This disables the "Solve" option and does not show the button.
name=BreakupText value="string" This sets the text for the "Breakup" button.
name=TidyText value="string" This sets the text for the "Tidy" button.
name=SolveText value="string" This sets the text for the "Solve" button.
name=MessageText value="string" This sets the text for the "Puzzle solved" message.
name=RunTarget value="String" This sets the Frame that the RunURL should be targeted at.
You can use,
"_self" Targets the window and frame that contains the applet.
"_parent" Targets the applet's parent frame.
"_top" Targets the top-level frame of the applet's window.
"_blank" Show in a new, unnamed top-level window.
or any Frame name that you have created
name=RunURL value="URL String" This sets a URL to trigger when the puzzle is solved.
This should be a FULL url (like value="http://www.ip.addr/dir/page.html") or relative to the current directory (like value="subdirectory/page.html"). Do NOT add a slash at the start of the URL

name=LosePieces value="true"
This reverts back to the older handling where the last used piece does not get placed on top of the pile, making it much easier to "lose" jigsaw pieces.
This is provided for those people who like this functionality.

name=AutoShowPieces value="false"
This disables the "Automatic display" of partially covered pieces. This can be used to make the puzzle "smoother". Pieces will not be brought to the top automatically as the mouse moves over them. To bring a playing piece to the top, you must "click" on it.
This option only has an effect if "LosePieces" is NOT switched on.

Colors are defined as an RGB hex string (in the same way as other HTML commands).
The sequence is "#RRGGBB"

For more information please refer to the example html files provided.

If you experience errors please check,
ALL spelling and remember that java is "Case SEnsitiVe",
for example: TextColor is not the same as textcolor The examples with this applet
You have the Jigsaw.jar file in the correct directory with the correct name. It MUST be "Jigsaw.jar" and NOT "jigsaw.jar".

This mailing list is used to keep people informed about updates/errors/new applets.

To join the Games mailing list,
send an email to: game-applets-request@svwhite.com and subscribe as the subject.
Please leave the message body empty.

To remove yourself from the Games mailing list,
send an email to: game-applets-request@svwhite.com and unsubscribe as the subject.
Please leave the message body empty.

Update: 20/02/2000
Author: Steve White.
Puzzle homepage: http://svwhite.com/games.