//////////////////////////////
//////////////////////////////
///help for flash saucer//////
//////////////////////////////
/////digsby wyscher ©mmiv/////
//////////////////////////////
//////original content////////
//////////////////////////////
////all rights reserved///////
//////////////////////////////
function helper(helpvalue) {
helppage=helpvalue;

if (!sleep &&loaded) {resettimer();}

backer='&nbsp;<a href=# onclick="help=false; helper(0); return false;"><font color=black><b><i>contents</i></b></font></a>';

if (helpvalue==0)
{helptext='<b><center><font class=bigger>Help Contents<br></font></center><blockquote><a href=# onclick="helper(3); return false;">overview and design criteria</a>.<br><a href=# onclick="helper(4); return false;">basic web animation</a>.<br><a href=# onclick="helper(5); return false;">user interaction and animation - 1</a>.<br><a href=# onclick="helper(6); return false;">user interaction and animation - 2</a>.<br><a href=# onclick="helper(7); return false;">co-ordination and control - 1</a>.<br><a href=# onclick="helper(8); return false;">co-ordination and control - 2</a>.<br><a href=# onclick="helper(9); return false;">co-ordination and control - 3</a>.<br><a href=# onclick="helper(10); return false;">co-ordination and control - 4</a>.<br><a href=# onclick="helper(11); return false;">embedding the movie and browser detection - 1</a>.<br><a href=# onclick="helper(12); return false;">embedding the movie and browser detection - 2</a>.<br><a href=# onclick="helper(13); return false;">embedding the movie and browser detection - 3</a>.<br><a href=# onclick="helper(14); return false;">embedding the movie and browser detection - 4</a>.<br><a href=# onclick="helper(15); return false;">fine tuning the appearance</a>.<br><a href=# onclick="helper(16); return false;">using the main controller</a>.<br><a href=# onclick="helper(17); return false;">browser and testing issues</a>.<br><a href=# onclick="helper(18); return false;">performance issues</a>.<br><a href=# onclick="helper(19); return false;">download the core and text</a>.<br><a href=# onclick="helper(20); return false;">contact details</a>.<br><a href=# onclick="helper(21); return false;">flash details</a>.<br><a href=# onclick="helper(22); return false;">final note</a>.<p align="right"><a href=# onclick="helper(1); return false;"><font class="bigger"><font color=red>exit</font></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b>';
tablebottom='';
}


if (helpvalue==1)
{helptext='<center><br><b><font class=bigger>General Information</font><br><br>To boot up, restart or stop the animation, click on either of the start buttons.<br><br>If everything stops, reload the page using your browser\'s "refresh" button.<br><br>Use the pie-shaped "main controller" at the top of the screen to manipulate the animated graphic.<br>For further details, click <a href=# onclick="helper(2); return false;"><u>here</u></a>.<br><br>To close the help screen, click on the red cross in the top right hand corner of the help window, or run the mouse pointer over the "main controller" at the top of the page.<br><BR>For further information, contact details, downloads and reference material, please enter the site and click on the help button: <img src=question1.gif border=0 align=top></b>';
}

if (helpvalue==2 || helpvalue==16) {
if (loaded) {var indenovis='14 - ';}
if (!loaded) {var indenovis='';}
helptext='<center><br><b><font class=bigger>'+indenovis+'Main Controller</font><blockquote><P align=justify>'+thefontvar+'There are eight different directions the animated image can be moved in, corresponding to the eight segments on the pie-shaped controller at the top of the page. The top segments move the animation towards the page\'s "horizon", the bottom segments bring the animation into the foreground. Left and right are (hopefully) self-explanatory, while the diagonal segments push the animation to the four corners of the page.<BR><BR> With a small amount of practice, it becomes quite easy to control the movement of the animated graphic. Clicking on the central button stops and restarts the animation.</b></blockquote>';
if (!loaded) {helptext=helptext+'<center><br><a href=# onclick="help=false; helper(1); return false;"><font color=red>back one page...</font></a></center>';}
}

if (helpvalue==3) {
helptext='<center><br><font class=bigger>1 - "Effective User-Interactive 3-D Animation within a 2-D Web-Space"</font></center><blockquote><P align=justify><b>Overview:</b><BR>To produce any form of animation, including high quality 3D graphic rendering, it is necessary to constantly re-draw at least some of the animated object. The rendered image (or object) is usually a construct of multiple images, and by moving, resizing and swapping some or all of these images, an effective form of animation is created. <br><bR>For the user to interact with the object, the changes to these composite images must be made to correspond to the user\'s requests or input.<br><br><b>Design criteria:</b><br>The challenge has been to employ a combination of Flash, JavaScript and DHTML to generate a user-interactive cross-browser compatible animated object moving within a two dimensional representation of three dimensional space.<br><BR>A small, smooth, functioning demonstration of the above would require the user to be able to move an animated object around the screen, but also to give the viewer a real feel of perspective, without the need for any extra plug-ins or unnecessarily specific 3-D-rendering code or other software.</font></b></blockquote>';
}

if (helpvalue==4) {
helptext='<center><br><b><font class=bigger>2 - Basic Animation on the Web</font><blockquote><P align=justify>'+thefontvar+'The principles behind animated graphic rendering involve finding a way of simultaneously altering both the appearance and the position of the animated object.<br><br>When creating web pages, there are a variety of different ways of providing a solution to the issues of animation...<br><br>Many 3<sup>rd</sup>-party sites offer their own graphic rendering plug-in, or a browser alternative to allow 3-D animation, but these are not supported across all browsers, often take ages to download, and are rarely packaged with standard browser technologies.<br><br>Both animated .gif and Macromedia Flash (.swf) formats are supported across most browsers, allowing animated objects to be embedded and viewed by most users on the web, irrespective of plug-ins or browser-type (admittedly, Flash does require a small plug-in, but most browsers now readily supply it pre-installed).</font></b></blockquote>';

backer='&nbsp;<a href=# onclick="helper(3); return false;"><font color=black><b><i>design rationale</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(5); return false;"><font color=black><b><i>user interaction - 1</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+backer;
}

if (helpvalue==5) {
helptext='<center><br><b><font class=bigger>3 - User Interaction and Animation - 1</font><blockquote><P align=justify>'+thefontvar+'It is a moderately simple process to allow a user to move a .gif image around the screen. Simply embed the image into a layer, and create a function using JavaScript via DHTML to alter the x- and y- coordinates of the layer (layer.top and layer.left), and the layer and the image within it moves around the screen. <br><BR>NB Netscape and Internet Explorer move animated .gifs in slightly different ways, so that when you move an animated .gif in IE, the animation stops playing.<br><BR>Unfortunately, .gif format does not support any form of direct, immediate user-interaction. So, although you can alter the position of the image by altering the x- and y- coordinates of the layer it is embedded in, you cannot directly alter its dimensions. Nor, for an animated .gif, can you control the behaviour of the animation (for example, you cannot start or stop the animation or select which frame of the animation to show at any particular time).<br><BR>The only way of zooming in or out on a .gif image embedded within a web page is to reload the image (together with re-writing the frame, page or layer it is embedded in), and use JavaScript to redefine the image’s new screen dimensions. This is a process for which neither browsers nor the internet are presently designed - there is too long a delay between each image reload, so you could never "animate" an object this way, unless it was a sleeping tortoise.</font></b></blockquote>';


backer='&nbsp;<a href=# onclick="helper(4); return false;"><font color=black><b><i>basic animation</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(6); return false;"><font color=black><b><i>user interaction - 2</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+backer;
}

if (helpvalue==6) {
helptext='<center><br><b><font class=bigger>4 - User Interaction and Animation - 2</font><blockquote><P align=justify>'+thefontvar+'Without this ability to instantly zoom on a .gif image, there is no way of easily representing the effect of perspective that is necessary to give the impression of an object moving around 3-dimensional space.<br><BR>Flash, on the other hand, does support a way for the user to interact with the animation - by using LiveConnect. Various different methods are supported, including a zoom feature. So, you can create an animated object and zoom in and out on it. To move this object around the screen, the same process is employed as with .gif images - create a separate layer for the Flash object, and using DHTML with JavaScript, move the whole object around the screen. (The only way of moving an image around <u>within</u> a flash movie is by generating an individual frame for each possible position on the screen that object has access to - a ridiculous solution, lacking any elegance, and a big waste of bandwidth).<center><br><a href=# onclick="helper(5); return false;"><font color=red>back one page...</font></a></center></font></b></blockquote>';

backer='&nbsp;<a href=# onclick="helper(4); return false;"><font color=black><b><i>basic animation</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(5); return false;"><font color=black><b><i>user interaction - 1</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(7); return false;"><font color=black><b><i>coordination & control</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+backer;

}

if (helpvalue==7) {
helptext='<center><br><b><font class=bigger>5 - Coordinating and Controlling the Animation - 1</font></center><blockquote><p>1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x,y positioning - dimensions one and two</p></b><p align=justify>Assuming that the screen is a two dimensional representation of a three dimensional space, then the top of the screen is the horizon, and therefore objects appearing at the top of the screen are as small as possible. The bottom of the screen represents the foreground, and objects in the foreground appear at their largest.<br><br>After <a href=# onclick="helper(11); return false;"><font color=red>embedding the flash movie into a layer</font></a> (flashlayer), JavaScript moves the layer and the image around by changing the flashlayer.top and flashlayer.left values. Reducing both the values moves the image towards the top left hand corner of the screen, increasing them both moves it to the bottom right hand corner of the screen.<center><br><a href=# onclick="helper(8); return false;"><font color=red>next page...</font></a></center></p></b></blockquote>';

backer='&nbsp;<a href=# onclick="helper(5); return false;"><font color=black><b><i>user interaction</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(8); return false;"><font color=black><b><i>coordination & control - 2</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+backer;

}

if (helpvalue==8) {
helptext='<center><br><b><font class=bigger>6 - Coordinating and Controlling the Animation - 2</font></center><blockquote><p>2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z positioning - the third dimension</p></b><p align=justify>The laws of perspective work simply enough - this cow right here in front of us looks pretty big in comparison to that similar sized cow standing way over there on the horizon, but if they were to switch places, or we were to walk over to the other cow, their relative sizes would swap over, the nearer cow would now look much larger than its fellow ruminant.</p><br>JavaScript communicates with Flash movies via the LiveConnect feature. One of the functions is <b>SetZoomRect(a,b,c,d)</b> where a,b,c,d are the x and y coordinates of the four sides of the zoom area. For example, if a Flash movie (flashobject) was 200 x 200 pixels in size, then flashobject.SetZoomRect(0,200,200,0) would show the whole picture, while flashobject.SetZoomRect(98,102,102,98) would zoom in on the central four pixels of the picture.<center><br><a href=# onclick="helper(7); return false;"><font color=red>back one page...</font></a><br><a href=# onclick="helper(9); return false;"><font color=red>next page...</font></a></center></p></b></blockquote>';

backer='&nbsp;<a href=# onclick="helper(5); return false;"><font color=black><b><i>user interaction</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(7); return false;"><font color=black><b><i>coordination & control - 1</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(9); return false;"><font color=black><b><i>coordination & control - 3</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+backer;

}

if (helpvalue==9) {
helptext='<center><br><b><font class=bigger>7 - Coordinating and Controlling the Animation - 3</font></center></b><blockquote><p align=justify>By coordinating <a href=# onclick="helper(7); return false;"><font color=red>1</font></a> and <a href=# onclick="helper(8); return false;"><font color=red>2</font></a> above, so that the embedded flash movie  is zoomed to the maximum at the bottom of the screen, while the same object appears at it\'s normal size on the horizon, an impression of 3-D depth appears on the screen. The trick here is to make sure that, although the actual animated image is quite small, the Flash movie it appears in is very large in proportion to it. In the example of our “flying cigar”, the image of the actual saucer is 100 times smaller than the Flash movie itself. The beauty of Flash is that the blank area the makes up the rest of the movie takes up no space at all in the compiled version - the total file size of a Flash movie is dictated not by the overall size of the movie, but the amount of different material within it.<blockquote>In general, we found it easier to separate the movement of the animated object into a left and right component, and an up and down component.<br><br>The left and right component simply moves the layer and movie to the left or right.<br><br>The up and down component moves the layer up and down, and zooms in and out on the image within the movie within the layer.<br><br>Diagonal movement is controlled by a function which calls both the above components e.g. right, down and zoom in or left, up and zoom out.</blockquote><center><a href=# onclick="helper(8); return false;"><font color=red>back one page...</font></a><br><a href=# onclick="helper(10); return false;"><font color=red>next page...</font></a></center></p></b>';

backer='&nbsp;<a href=# onclick="helper(5); return false;"><font color=black><b><i>user interaction</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(8); return false;"><font color=black><b><i>coordination & control - 2</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(10); return false;"><font color=black><b><i>coordination & control - 4</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+backer;
}


if (helpvalue==10) {
helptext='<center><br><b><font class=bigger>8 - Coordinating and Controlling the Animation - 4</font></center></b><blockquote><p align=justify>Limits are set on both how large the image can zoom to, and where it can roam to on the screen - this stops it scrolling off the page.The rate at which the object zooms on the screen is proportional to how large the object is. This means that when objects are increasing in size, the rate at which they do so gets slower as they “lumber into view”, while objects disappearing towards the horizon do so faster and faster.<center><br><a href=# onclick="helper(9); return false;"><font color=red>back one page...</font></a><br></center></p></b></blockquote>';

backer='&nbsp;<a href=# onclick="helper(5); return false;"><font color=black><b><i>user interaction</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(9); return false;"><font color=black><b><i>coordination & control - 3</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(11); return false;"><font color=black><b><i>embedding the flash movie</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+backer;
}

if (helpvalue==11) {
helptext="<br><center><b><font class=bigger>9 - Embedding the Flash object and Browser Detection - 1</font></b></center><blockquote><p align=justify>Firstly, it is necessary to set up an appropriate Document Object Model Switch (DOMS) for the layer in which the Flash movie is to be embedded. Different browsers handle Dynamic HTML via JavaScript in different ways (especially with Flash embedded). For them all to be able to run the same page correctly, a DOMS is necessary to resolve these browser differences. An example of a basic DOMS appears below.<br></p>HTML component:<br><font color=black>&lt;DIV ID=&quot;saucerLayer&quot; STYLE=&quot;position: absolute;&quot;&gt;&lt;/div&gt;</font><br>JavaScript component:<font class=finer><br><font color=black><font face=courier new>function set_up() {<br>if (document.all) { //all versions of internet explorer<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;doc = 'document.all[&quot;';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sty = '&quot;].style';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;htm=  '&quot;]';}<br>else if (document.layers) { // netscape 4<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;doc = &quot;document.&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sty = &quot;&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;htm=  &quot;.document&quot;}<br>else if (document.getElementById) { // netscape 7<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;doc=&quot;document.getElementById(\'&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sty = &quot;\').style&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;htm=  &quot;\')&quot;;}<br>else {alert(&quot;Unrecognized Browser Detected&quot;);}<br>saucerLyr = eval(doc + 'saucerLayer' + sty); saucerHTML = eval(doc + 'saucerLayer' + htm);}<br></font></font></font><center><a href=# onclick=helper(12); return false;><font color=red>next page...</font></a><br></center></p></b></blockquote>";

backer='&nbsp;<a href=# onclick="helper(5); return false;"><font color=black><b><i>user interaction</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(7); return false;"><font color=black><b><i>coordination & control</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(12); return false;"><font color=black><b><i>embedding the flash movie - 2</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+backer;
}


if (helpvalue==12) {
helptext="<br><center><b><font class=bigger>10 - Embedding the Flash object and Browser Detection - 2</font></center></b><blockquote><p align=justify>Now that the layer is properly set up, it is necessary to populate it with the Flash movie. Predictably, different browsers handle writing to layers in different ways. Older versions of Netscape use the document.write method, while most other browsers rely on the document.innerHTML method. In this case:<br><BR>JavaScript component:<font class=finer><br><font color=black><font face=courier new>if(document.layers) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;saucerHTML.open();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;saucerHTML.write(maintext);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;saucerHTML.close();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br> else<br> {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eval('parent.saucerHTML.innerHTML = maintext');<br>}<br></font></font></font>where “maintext” is a string representing the Flash movie<br><center><br><a href=# onclick=helper(11); return false;><font color=red>back one page...</font></a><br><a href=# onclick=helper(13); return false;><font color=red>next page...</font></a><br></center></p></b></blockquote>";

backer='&nbsp;<a href=# onclick="helper(5); return false;"><font color=black><b><i>user interaction</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(7); return false;"><font color=black><b><i>coordination & control</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(11); return false;"><font color=black><b><i>embedding the flash movie - 1</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(13); return false;"><font color=black><b><i>embedding the flash movie - 3</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+backer;
}


if (helpvalue==13) {
helptext="<br><center><b><font class=bigger>11 - Embedding the Flash object and Browser Detection - 3</font></center></b><blockquote><p align=justify>An example of the maintext string for a flash movie called &quot;myFlash&quot;:</p><BR><font class=finer><font color=black><font face=courier new>maintext='&lt;OBJECT id=&quot;myFlash&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0&quot; width='+(available_width)+' height='+(available_width/3)+'&gt; &lt;PARAM NAME=movie VALUE=&quot;example.swf&quot;&gt; &lt;PARAM NAME=play VALUE=false&gt; &lt;PARAM NAME=loop VALUE=true&gt; &lt;PARAM NAME=menu VALUE=true&gt; &lt;PARAM NAME=quality VALUE=high&gt; &lt;PARAM NAME=wmode VALUE=transparent&gt; &lt;PARAM NAME=salign VALUE=T&gt; &lt;EMBED src=&quot;example.swf&quot; play=false loop=true menu=true quality=high  wmode=transparent salign=T name=myFlash WIDTH='+(available_width)+' HEIGHT='+(available_width/3)+' TYPE=&quot;application/x-shockwave-flash&quot; swLiveConnect=true<br>PLUGINSPAGE=&quot;http://www.macromedia.com/shockwave/download/index.cgi?<br>P1_Prod_Version=ShockwaveFlash&quot;&gt; &lt;/EMBED&gt; &lt;/OBJECT&gt;';<br></font></font></font><br>Note that the dimensions of the Flash movie are variable, and not fixed. These variables are generated in direct proportion to the available area of the user’s screen, so the Flash movie is given the appropriate dimensions before it is written to the page - this allows the page to have the same appearance across all browsers and screen sizes. These screen variables also help to control the rate of movement and zooming for the image - a large screen needs a faster rate.<br><center><br><a href=# onclick=helper(12); return false;><font color=red>back one page...</font></a><br><a href=# onclick=helper(14); return false;><font color=red>next page...</font></a><br></center></p></b></blockquote>";

backer='&nbsp;<a href=# onclick="helper(5); return false;"><font color=black><b><i>user interaction</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(7); return false;"><font color=black><b><i>coordination & control</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(12); return false;"><font color=black><b><i>embedding the flash movie - 2</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(14); return false;"><font color=black><b><i>embedding the flash movie - 4</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+backer;
}



if (helpvalue==14) {
helptext='<br><center><b><font class=bigger>12 - Embedding the Flash object and Browser Detection - 4</font></center></b><blockquote><p align=justify>Finally, one more browser issue is addressed: for LiveConnect to work via JavaScript, the Flash movie must be correctly identified. Again, early versions of Netscape need to be directed to the precise object embedded in the exact layer, while most other browsers use the regular document.object method.<br>Hence:<br></p><BR><font class=finer><font color=black><font face=courier new>if (document.layers) {flashsaucer=saucerHTML.embeds.myFlash;}<br>else<br>{flashsaucer=eval(\'document.myFlash\');}<br><BR></font></font></font><br>The Flash movie "myFlash" is now resolved to "flashsaucer".<br><br><center><br><a href=# onclick="helper(13); return false;"><font color=red>back one page...</font></a><br></center></p></b></blockquote>';

backer='&nbsp;<a href=# onclick="helper(5); return false;"><font color=black><b><i>user interaction</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(7); return false;"><font color=black><b><i>coordination & control</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(12); return false;"><font color=black><b><i>embedding the flash movie - 3</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(15); return false;"><font color=black><b><i>fine tuning</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+backer;
}


if (helpvalue==15) {
helptext='<br><center><b><font class=bigger>13 - Fine Tuning the Appearance</font></center></b><blockquote><p align=justify>When the user moves the animated object, stop the animation and show an individual frame of the movie tilting to the left or right to add to the effect of movement.<br><blockquote><font class=finer><font color=black><font face=courier new>flashsaucer.StopPlay();<br>flashsaucer.GotoFrame(frameposition);<br><br></font></font></font></blockquote>where "frameposition" is the appropriate frame number.<br><br>When the user stops controlling the animated image, restart the animation again:<br><blockquote><font class=finer><font color=black><font face=courier new>flashsaucer.Play();<br></font></font></font></p></b></blockquote>';

backer='&nbsp;<a href=# onclick="helper(5); return false;"><font color=black><b><i>user interaction</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(7); return false;"><font color=black><b><i>coordination & control</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(11); return false;"><font color=black><b><i>embedding the movie</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+backer;
}


if (helpvalue==17) {
helptext='<br><center><b><font class=bigger>15 - Browsers issues, room for improvement and other issues</font></center></b><blockquote><p align=justify>Early versions of Netscape place all embedded Flash objects at the top of the z-index stack, which is a problem if you want to write anything on top of the image or movie (e.g. control or help buttons or any useful text). At present, this makes it quite difficult to foresee an easy way of populating a window with multiple Flash movies, all animated and embedded within moving layers - you want to be able to control their stacking order.</p><br><BR><center><b><font class=bigger>Unresolved testing issues</font></center></b><p align=justify>For an unknown reason, the code starts to misbehave after a while when using Netscape 4.08 running in Windows XP (independent of whichever compatibility mode used). Exactly the same setup in Windows 98 does not generate the same problems.<br><BR>Also, early versions of Netscape do not support transparency in Flash, so even static images in layers in the background will not appear behind the flash movie - when combined with the stacking issue, this is particularly troublesome during "sleep mode".</p></b></blockquote>';

backer='&nbsp;<a href=# onclick="helper(5); return false;"><font color=black><b><i>user interaction</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(7); return false;"><font color=black><b><i>coordination & control</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(11); return false;"><font color=black><b><i>embedding the movie</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(18); return false;"><font color=black><b><i>performance issues</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+backer;
}


if (helpvalue==18) {
helptext='<br><center><b><font class=bigger>16 - Performance Issues</font></center></b><blockquote><p align=justify>All things being equal, the animation should perform adequately across all browsers and computer set-ups. One obvious exception to this rule would be that the speed of the graphic is dependent on screen resolution - make your browser window only half the size of your screen, and the repsonse times and handling of the graphic improve considerably. The usual issues regarding hard disk speed and screen resolution also apply.<BR><BR>Between the browsers, in general, overall performance on Internet Explorer outstrips that of Netscape, so if it looks bad in Netscape, try IE! Older versions of Netscape appear to handle the graphic better than the newer versions, but <a href=# onclick="helper(17); return false;"><font color=red>crash more readily</font></a>.</p></b></blockquote>';

backer='&nbsp;<a href=# onclick="helper(5); return false;"><font color=black><b><i>user interaction</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(7); return false;"><font color=black><b><i>coordination & control</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(11); return false;"><font color=black><b><i>embedding the movie</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick="helper(17); return false;"><font color=black><b><i>browser issues</i></b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+backer;
}


if (helpvalue==19) {
helptext='<br><center><b><font class=bigger>17 - Download Page</font></b></center><blockquote><p align=justify>This entire site is available for download as a single .zip file (approx. 65Kb). Contained along with the reference text, images and Flash movies is the original Flash generator (position.fla) for you to alter for you own devices. The original Flash generator for saucer.swf is not included, but the Flash statistics for it are available <a href=# onclick="helper(21); return false;"><font color=red>here</font></a>. The original code is copyrighted, but if you include a reference link back to this original source (http://www.sonik-systems.com/saucer) then you have the author\'s permission for use.<br><blockquote><a href=saucer.zip onmouseout="window.status=\' \'; return true;"  onmouseover="window.status=\'download the zip file\'; return true;"><img src=download.gif border=0 alt="download&nbsp;here" align=center> download the zip file</a></p></b></blockquote>';

backer='&nbsp;'+backer;
}

if (helpvalue==22) {
helptext='<br><center><b><font class=bigger>20 - Final Note</font></b><br><br>"Labitur et labetur in omne volibus aevum"<blockquote><blockquote><p align=justify><br><br>We gladly admit that the solution required a fair amount of dodgy reverse engineering to produce an effective, smooth result.<br><br>Still, it works (rather well in IE) and appears to offer new opprtunities for animation and user-interaction on the web.<br><br><center>Best regards,<br><br><img src=signatre.gif border=0>';

backer='&nbsp;'+backer;
}
 
if (helpvalue==20) {
helptext='<br><center><b><font class=bigger>18 - Contacting the Author</font></b><blockquote><blockquote>all correspondence, suggestions, criticisms or witticisms welcome and gratefully accepted via email at:<br><a href=mailto:digsby@sonik-systems.com?subject=flying_saucer><font color=red>digsby@sonik-systems.com</font></a><br><br>alternatively, you can leave a voice message in the UK at:<br><b><font color=red>+44 (0) 7763 217437</font></b><br><br>thank you for your attention<br><br>"may a star shine brightly on our meeting" <br><br><font class=tinitiny><font color=black><b>digsby wyscher - ©mmiv</font></font></font></center></blockquote>';

backer='&nbsp;'+backer;
}

if (helpvalue==21) {
helptext='<br><center><b><font class=bigger>19 - Flash Ship Statistics</font></b></center><blockquote><blockquote>File name: saucer.swf<br>Size of movie: 2000px by 800px<br>Number of Frames: 58 @ 24 fps<br>Ship tilt to far left: frame(0)<br>Ship tilt to far right: frame(29)<bR>Ship in middle: frame(15)</font></font></font></center></blockquote>';

backer='&nbsp;'+backer;
}

if (helpvalue==-1) {
tablebottom='';
helptext='<br><center><b><font class=bigger>Sleep Mode settings</font></b><br><br>';
if (document.layers) {helptext=helptext+'<form name="timerinput">';}
if (!document.layers) {helptext=helptext+'<form id="timerinput">';}
helptext=helptext+'<blockquote><blockquote>Present timeout value: '+timerval+ ' seconds<br><br>To change the amount of time before the site enters sleep mode, enter the value in seconds <input type=text size=4  name=nutimer value='+timerval+'> <br>and click on <a href=# onmouseover="window.status=\'click&nbsp;here&nbsp;to&nbsp;change&nbsp;the&nbsp;timeout\'; return true;" onmouseout="window.status=\'\'; return true;" onclick="subform();window.status=\'working...\';return false ;"><IMG SRC="go.gif" border=0 align=top alt=click&nbsp;here&nbsp;to&nbsp;change&nbsp;the&nbsp;timeout></a></form></blockquote></blockquote><br><p align="right"><a href=# onclick="helper(1); return false;"><font class="bigger"><font color=red>exit</font></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'; 



index_table='<td width=1% valign=MIDDLE bgcolor=royalblue '+table_extra4+'><center><b><br></td>';


backer='&nbsp;'+backer;
}


if (helpvalue==24) {
tablebottom='';
helptext='<br><center><b><font class=bigger>Sleep Mode settings</font></b><br><br>New timeout value has been set to: <br>' +timerval +' seconds<BR><BR><BR></blockquote></blockquote><br><p align="right"><a href=# onclick="helper(1); return false;"><font class="bigger"><font color=red>exit</font></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'; 


backer='&nbsp;'+backer;
}

if (helpvalue==40) {
tablebottom='';

nutime=new Date();
nusec=nutime.getSeconds();
numin=nutime.getMinutes();
nuhour=nutime.getHours();
if (nuhour<10) {nuhour='0'+nuhour;}
if (numin<10) {numin='0'+numin;}
if (nusec<10) {nusec='0'+nusec;}

if (agent.indexOf("windows")   !=   -1) {ostype="Windows";}
if (agent.indexOf("os2")   !=   -1) {ostype="os2";}
if (agent.indexOf("mac")   !=   -1) {ostype="mac";}
if (agent.indexOf("unix")   !=   -1) {ostype="unix";}
if (agent.indexOf("sun")   !=   -1) {ostype="sun";}

if ((agent.indexOf("win16")   !=   -1) ||  (agent.indexOf("windows 3.1")   !=   -1)) {ostype="16 bit Windows 3.1/3.11";}
if ((agent.indexOf("win95")   !=   -1) || (agent.indexOf("windows 95")   !=   -1)) {ostype="Windows 95";}
if ((agent.indexOf("win98")   !=   -1) || (agent.indexOf("windows 98")   !=   -1)) {ostype="Windows 98";}
if (agent.indexOf("win 9x 4.90")   !=   -1) {ostype="Windows ME";}
if ((agent.indexOf("winnt")   !=   -1) || (agent.indexOf(" nt ")   !=   -1)) {ostype="Windows NT";}
if ((agent.indexOf("windows nt 5.0")   !=   -1) || (agent.indexOf("windows 2000")   !=   -1)) {ostype="Windows 2000";}
if ((agent.indexOf("windows nt 5.1")   !=   -1) || (agent.indexOf("windows xp")   !=   -1)) {ostype="Windows XP";}


if (is.ns) {manufact="Netscape";
	if (is.ns2){bversion="2";}
	if (is.ns3){bversion="3";}
	if (is.ns4b){bversion="4b";}
	if (is.ns4){bversion="4";}
	if (is.ns6){bversion="6";}
if (agent.indexOf("netscape/7.1")   !=   -1) {bversion="7.1";}
if (agent.indexOf("4.08")   !=   -1) {bversion="4.08";}
}

if (is.ie) {manufact="Microsoft Internet Explorer";
	if (is.ie3){bversion="3";}
	if (is.ie4){bversion="4";}
	if (is.ie5){bversion="5";}
	if (is.ie55){bversion="5.5";}
	if (is.ie6){bversion="6";}
if (agent.indexOf("5.01")   !=   -1) {bversion="5.01";}

}

thisvalue=(parseInt(saucerLyr.top)-(available_height/24));
thisvalue=parseInt(thisvalue);

helptext='<br><br><br><center><b><font class=bigger>Status Report</font><blockquote>Time now : <font color=red>'+nuhour+':' +numin+':' +nusec+' </font>local time<br><br>Logged on at: <font color=crimson>'+originalhour+':' +originalmin+':' +originalsec+'</font></center><br><br><blockquote>Sleep mode timeout value: '+timerval+' seconds<br>Distance between top edge of movie and top of available screen: '+thisvalue+'px<BR>Width of browser application window: ' + available_width + 'px<br>Height of browser application window: ' + available_height + 'px<br>Colour Depth: ' + screen.colorDepth + '<br><br>Browser: '+ manufact +' version '+ bversion +'<br>Operating System: ' +ostype+'<BR></blockquote><br><p align="right"><a href=# onclick="helper(1); return false;"><font class="bigger"><font color=red>exit</font></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'; 

index_table='<td width=1% valign=MIDDLE bgcolor=red '+table_extra4+'><center><b>s<br>t<br>a<br>t<br>u<br>s<br><br>r<br>e<br>p<br>o<br>r<br>t</td>';

backer='&nbsp;'+backer;
}

if (loaded && helpvalue>1 && helpvalue<24) {tablebottom='<tr height=2.85><TD align=left colspan=3 valign=top bgcolor=red border=1 '+table_extra2+'><font face=arial>'+thefontvar+'<font class=lisser><font class=lisser><font color=white><b>&nbsp;navigation:&nbsp;&nbsp;&nbsp;</b></font>'+backer+'</font></font></font></td></tr>';}


if (loaded) {table_corner='<td bgcolor=#cccccc valign=top><a href=# onmouseout="window.status=\' \'; return true;"  onmouseover="window.status=\'back to contents\'; return true;" onclick="help=false; helper(0); return false;"><img src=question1.gif border=0 align=top alt="return&nbsp;to&nbsp;contents&nbsp;page"></a></TD>';}


if (loaded && helpvalue <24 && helpvalue!=-1) {index_table='<td width=1% valign=top height=100% bgcolor=orange '+table_extra4+'><font face=arial>'+thefontvar+'<b><center><font class="bigger">&nbsp;<br></font>&nbsp;<a href=# onmouseout="window.status=\' \'; return true;"  onmouseover="window.status=\'up&nbsp;one&nbsp;page\'; return true;" onclick="changer(helppage,\'up\'); return false;"><img src=up.gif border=0 alt="up&nbsp;one&nbsp;page"></a><br><a href=# onclick="helper(3); return false;">1</a><BR><a href=# onclick="helper(4); return false;">2</a><BR><a href=# onclick="helper(5); return false;">3</a><BR><a href=# onclick="helper(6); return false;">4</a><BR><a href=# onclick="helper(7); return false;">5</a><BR><a href=# onclick="helper(8); return false;">6</a><BR><a href=# onclick="helper(9); return false;">7</a><BR><a href=# onclick="helper(10); return false;">8</a><BR><a href=# onclick="helper(11); return false;">9</a><BR><a href=# onclick="helper(12); return false;">10</a><BR><a href=# onclick="helper(13); return false;">11</a><BR><a href=# onclick="helper(14); return false;">12</a><BR><a href=# onclick="helper(15); return false;">13</a><BR><a href=# onclick="helper(16); return false;">14</a><BR><a href=# onclick="helper(17); return false;">15</a><BR><a href=# onclick="helper(18); return false;">16</a><BR><a href=# onclick="helper(19); return false;">17</a><BR><a href=# onclick="helper(20); return false;">18</a><BR><a href=# onclick="helper(21); return false;">19</a><BR><a href=# onclick="helper(22); return false;">20</a><br><a href=# onmouseout="window.status=\' \'; return true;"  onmouseover="window.status=\'down&nbsp;one&nbsp;page\'; return true;"   onclick="changer(helppage,\'down\'); return false;"><img src=down.gif border=0 alt="down&nbsp;one&nbsp;page"></a></td>';}


maintext='<table border=0 cellspacing=0 cellpadding=0 height='+(available_height*0.8)+' width='+(available_width*0.9)+' ><tr height=2.85  '+table_extra1+'>'+table_corner+'<TD align=left valign=top width=100% height=2.85 bgcolor=#cccccc ><font color=white><font face=arial>'+thefontvar+'<font class=LISSER><b>&nbsp;help for 3D-flash</b></font></font></font></font></td><td width=1 align=right height=2.85 bgcolor=#cccccc valign=center><a href=# onmouseout="window.status=\' \'; return true;"  onmouseover="window.status=\'close the help window\'; return true;" onclick="helper(1); return false;"><img src=cross.gif border=0 align=top alt="close&nbsp;the&nbsp;help&nbsp;window"></a></td></tr><tr>'+index_table+'<td colspan=2 height=100% valign=top background=screen1.gif '+table_extra3+'><font face=arial><font color=darkred>'+thefontvar+helptext+'</font></font></font></td><!td><!/td></tr>'+tablebottom+'</table>';
destination=help1HTML;
magiccontents();

if (helpvalue<2) {
	if (!help) {
	clipLayer(theclpLyr,nuclipArray,1);
	help=true;
	help1Lyr.visibility="visible";
		if (document.layers) {saucerLyr.visibility="hidden";flashsaucer.StopPlay();}
	}
	else
	{
	clipLayer(theclpLyr,nuclipArray,0);
	help=false;
	help1Lyr.visibility="hidden";
	if (document.layers) {saucerLyr.visibility="visible";flashsaucer.Play();}
}}}


function changer(helpvalue1,dir) {
var direc=dir;
help=false;
thisvalue=helpvalue1;
if (thisvalue<3 && direc=="up"){thisvalue=3;}
if (thisvalue<3 && direc=="down"){thisvalue=2;}
if (direc=="up" && thisvalue>3){thisvalue=thisvalue-1;}
if (direc=="down" && thisvalue<22) {thisvalue=thisvalue+1;}
helper(thisvalue);
}
