// Copyright info:// This JavaScript code is © Copyright, December 1998, by Black Type White Paper// All rights reserved unless explicitly given written permission// This code is permitted for use by Black Type White Paper customers only// Do not change this code in any way, Black Type White Paper will not be// responsible for any changes to this specific file by the customer// Release  Version: 1.1.6// Internal Version: 2.2.8zC=new Object();zC.Default=new Object();zC.Default.ImagePath="art";zC.Default.ImageExte="jpg";zC.Default.HTMLPath="";zC.Default.HTMLExte="html";zC.Default.Timeout=750;zC.Default.ErrorLimit=5;zC.Default.GIFOnce=false;zC.Debug=new Object();zC.Debug.Level=0;zC.Debug.Window=top;zC.Loading=true;zC.Cache="top.Cached";zC.Images="zC.zImages";zC.Frames="zC.zFrames";zC.Series="zC.zSeries";zC.Update="zC.zUpdate";zC.Errors="zC.zErrors";Default=zC.Default;if (!this[zC.Cache])this[zC.Cache]=new Object();this[zC.Images]=new Object();this[zC.Series]=new Object();this[zC.Frames]=new Object();this[zC.Update]=new Object();zC.Cache+=".";zC.Images+=".";zC.Series+=".";zC.Update+=".";zC.Frames+=".";zC.Errors+=".";function Debug(theLevel, theMsg, theParm1, theParm2, theParm3,theParm4, theParm5){if (zC.Debug.Level >=theLevel){var w=zC.Debug.Window.document;w.write(theMsg);if (theParm1)	w.write(" (" + theParm1);if (theParm2)	w.write(", " + theParm2);if (theParm3)	w.write(", " + theParm3);if (theParm4)	w.write(", " + theParm4);if (theParm5)	w.write(", " + theParm5);if (theParm1)	w.write(")");w.write("<BR>");}}function AssociateImageToIMGs(theImage, theIMG, theFrom, theTo){Debug(1, "AssociateImageToIMGs", theImage, theIMG, theFrom, theTo);for (var i=theFrom; i <=theTo; i++)this[zC.Images + theIMG + i]=theImage;}function AssociateIMGToSeries(theIMG, theSeries){Debug(1, "AssociateIMGToSeries", theIMG, theSeries);var Series=this[zC.Series + theSeries];if (Series)for (var i=Series.From; i <=Series.To; i++){this[zC.Images + theSeries + i]=theIMG;Debug(3, "the IMG Name='"+theIMG+" will be updated when '"+theSeries+i+"' is updated")}elseDebug(0, "Internal Error: AssociateImageToSeries()... the series: '"+theSeries+"' is not cached");}function AssociateSeriesToFrame(theSeries, theFrame, theHTMLSeries, theState){Debug(1, "AssociateSeriesToFrame", theSeries, theFrame, theHTMLSeries, theState);var HTMLNaE=theHTMLSeries.split('.');if (!theState)theState=1;if (!HTMLNaE[1])HTMLNaE[1]=Default.HTMLExte;if (Default.HTMLPath !="")HTMLNaE[0]=Default.HTMLPath + HTMLNaE[0];var Series=this[zC.Series + theSeries];if (Series)for (var i=Series.From; i <=Series.To; i++){FrameData=new Object();FrameData.FrameName=theFrame;FrameData.FrameURL=HTMLNaE[0] + i + '.' + HTMLNaE[1];this[zC.Frames + theSeries + i + 'z' + theState]=FrameData;Debug(2, "the Frame '"+theIMG+" will be updated when '"+theSeries+i+"' is moused over")}elseDebug(0, "Internal Error: AssociateSeriesToFrame()... the series: '"+theSeries+"' is not cached");}function CacheImage(theImage, theFileState1, theFileState2, theFileState3, theFileState4){Debug(1, "CacheImage", theFileState1, theFileState2, theFileState3, theFileState4);if (!theFileState1)theFileState1="";InternalCacheFile(theImage, theFileState1);if (theFileState2)	InternalCacheFile(theImage, theFileState2);if (theFileState3)	InternalCacheFile(theImage, theFileState3);if (theFileState4)	InternalCacheFile(theImage, theFileState4);}function CacheSeries(theSeries, theFrom, theTo, theFileState1, theFileState2, theFileState3, theFileState4){Debug(1, "CacheSeries", theSeries, theFrom, theTo, theFileState1, theFileState2, theFileState3, theFileState4);if (!theFileState1)theFileState1="";InternalCacheSeries(theSeries, theFrom, theTo, theFileState1);if (theFileState2)	InternalCacheSeries(theSeries, theFrom, theTo, theFileState2);if (theFileState3)	InternalCacheSeries(theSeries, theFrom, theTo, theFileState3);if (theFileState4)	InternalCacheSeries(theSeries, theFrom, theTo, theFileState4);}function InternalCacheSeries(theSeries, theFrom, theTo, theFileState){Debug(1, "InternalCacheSeries", theSeries, theFrom, theTo, theFileState);var NaE=theSeries.split('.');var StateNaE=theFileState.split('.');if (!StateNaE[1])StateNaE[1]=Default.ImageExte;if (!NaE[1])NaE[1]=StateNaE[1];for (var i=theFrom; i <=theTo; i++)InternalCacheFile(NaE[0] + i + '.' + NaE[1], StateNaE[0]);var SeriesName=zC.Series + NaE[0];if (!this[SeriesName]){this[SeriesName]=new Object();Series=this[SeriesName];Series.From=theFrom;Series.To=theTo;}else{Series=this[SeriesName];if (theFrom < Series.From)	Series.From=theFrom;if (theTo > Series.To)	Series.To=theTo;}}function InternalCacheFile(theFile, theFileState){Debug(1, "InternalCacheFile", theFile, theFileState);if (!theFileState)theFileState="";if (theFile){var NaE=theFile.split('.');var OtCName=zC.Cache + NaE[0];var OtC=this[OtCName];if (!OtC){OtC=new Object();OtC.States=new Array();OtC.Paths=new Array();this[OtCName]=OtC;}OtC.Paths[OtC.Paths.length]="";OtC.States[OtC.States.length]=new Image();if ((Default.GIFOnce==false) || (NaE[1] !="gif"))	OtC.States[OtC.States.length-1].src=Default.ImagePath+"/"+NaE[0]+theFileState+'.'+NaE[1];else	OtC.Paths[OtC.Paths.length-1]=Default.ImagePath+"/"+NaE[0]+theFileState+'.'+NaE[1];Debug(2, "image: "+OtCName+" state: " + (OtC.States.length-1));Debug(3, "cached: " + OtC.States[OtC.States.length-1].src);}}function InternalDisplayNow(theIMG, theImage, theState){Debug(1, "InternalDisplayNow", theIMG, theImage, theState);var CachedImage=this[zC.Cache + theImage];if (CachedImage){if (CachedImage.Paths.length <=theState)theState=CachedImage.Paths.length-1;if (CachedImage.Paths[theState]=="")	document.images[theIMG].src=CachedImage.States[theState].src;else	document.images[theIMG].src=CachedImage.Paths[theState];}var Associate=this[zC.Frames + theImage + "z" + theState];if (Associate){Frame=top.frames[Associate.FrameName];if (Frame)Frame.location=Associate.FrameURL;elseDebug(0, "Internal Error: InternalDisplayState()... '"+Associate.FrameName+"' does not exist as a Frame");}}function InternalDisplayLater(theIMG){Debug(1, "InternalDisplayLater", theIMG);var Update=this[zC.Update + theIMG];var NewState=Update.Image + Update.State;if (Update.Drawn !=NewState){DisplayNow(Update.Image, Update.State);Update.Drawn=NewState;}}function InternalUpdateLater(theIMG, theImage, theState){Debug(1, "InternalUpdateLater", theIMG, theImage, theState);var UpdateName=zC.Update + theIMG;var Update=this[UpdateName];if (!Update){this[UpdateName]=new Object();Update=this[UpdateName];Update.Drawn="";}Update.Image=theImage;Update.State=theState;setTimeout("InternalDisplayLater('"+theIMG+"')", Default.Timeout);}function InternalDisplayState(theImage, theState, theLater){Debug(1, "InternalDisplayState", theImage, theState, theLater);var DisplayedSomething=false;if(document.images[theImage]){if (theLater)	InternalUpdateLater(theImage, theImage, theState);else	InternalDisplayNow(theImage, theImage, theState);DisplayedSomething=true;}var Associate=this[zC.Images + theImage];if (Associate){if (document.images[Associate]){if (theLater)	InternalUpdateLater(Associate, theImage, theState);else	InternalDisplayNow(Associate, theImage, theState);DisplayedSomething=true;}}if (!DisplayedSomething){var Error=this[zC.Errors + theImage];if (Error)	Error+=1;else	Error=1;if (Error > zC.Default.ErrorLimit)Debug(0, "Internal Error: InternalDisplayState()... '"+theImage+"' does not exist in images[] nor is it cached");}}function Display(theImage)	{DisplayState(theImage, 0);}function DisplayOff(theImage)	{DisplayNow(theImage, 0);}function DisplayOn(theImage)	{DisplayNow(theImage, 1);}function DisplayUnselect(theImage)	{DisplayNow(theImage, 0);}function DisplaySelect(theImage)	{DisplayNow(theImage, 1);}function DisplayNow(theImage, theState)	{InternalDisplayState(theImage, theState, false);}function DisplayState(theImage, theState)	{InternalDisplayState(theImage, theState, true);}function GIFsAreSingleAnimations(theTruth){if (!theTruth)theTruth=true;Default.GIFOnce=theTruth;}function GIFsAreContinuousAnimations(theTruth){if (!theTruth)theTruth=false;Default.GIFOnce=theTruth;}function CacheCleanup()	{zC.Loading=false;}function DefaultImagePath(thePath)	{Default.ImagePath=thePath;}function DefaultImageExtension(theExtension)	{Default.ImageExte=theExtension;}function DefaultTimeout(theTimeout)	{Default.Timeout=theTimeout}function DefaultErrorLimit(theLimit)	{Default.ErrorLimit=theLimit;}