/*
***********************************************************************************************
************************************************************************************************
************************************************************************************************
	
  Use the Following code to eliminate the extra click required in internet explorer
  It also improves other browsers' responses if java has been disabled
   
   
  Instead of using the <applet tag in your webpage do the following:
   
   
  1) copy this file rotatorscript.js into a directory called www.yoursite.com/rotatorcode/
   
   
  2) Copy and paste this block of HTML to the location in the page that you want the Viewer
   

	<NOSCRIPT>
		 <img src='/rotatordata/R00342/spin2-medium.gif'> <br> 
		<a href='http://www.3drotator.com?j=enablejava' style='font-size:10px;'>Enable JavaScript
			 to Rotate, Zoom,<br>and Measure this Product</a><br>
	</NOSCRIPT>  
       <script language=JavaScript src='/rotatordata/rotatorscript.js' type='text/javascript'></script>
            <script language=JavaScript type='text/javascript'>
                TypicalRotator("R00342", "adf34dej", "medium", "200", "220");
            </script>


See full instructions at <a href=http://www.3drotator.com?j=installation >3D Rotator Product Viewer Installation</a>

************************************************************************************************
************************************************************************************************
************************************************************************************************

This file defines the following functions

TypicalRotator(...)
CustomRotator(...)
ReplaceCustomRotator(...)
ReplaceTypicalRotator(...)
AdvancedRotator(...)
MakeRotatorCode(...)
RotatorOnStart(...)
GreenProgressBar(...)

TypicalImager(...)
CustomImager(...)

and defines a global variable named

RotatorViewerNamed[rotatorId]


*/



var defaultRotatorVersion = "rotator16";
var defaultRotatorCodeBase = "/rotatordata/"; // Must end with forward slash '/' do not include website url 'http:www.yoursite.com', can start with '../', if does not start with '/' then relative to webpagefolder
var defaultRotatorDataRoot = ""; // MUST be blank or end with forward slash '/' do not include website url 'http:www.yoursite.com'. if this folder is not inside the codebase then viewer will not function if viewed off of a CD/DVD or local drive
				 // defaultRotatorDataRoot, starting with a '/' is based off the website root, otherwise is relative to 'WebpageFolder' or 'ViewerFolder'(ie defaultRotatorCodeBase) as specified below
var defaultRotatorDataRootRelativeTo = 'ViewerFolder'; //for 3DRotator, values can be 'WebpageFolder' or 'ViewerFolder'
var defaultImagePathRelativeTo = 'ViewerFolder'; //for 2DImager, values can be 'WebpageFolder' or 'ViewerFolder'



var defaultRotatorParameters = ""; //place parameters for custom buttons and other styles here
var defaultRotatorOnPreStart = "RotatorOnPreStart";
var defaultVisibility = "visible"; // hidden or visible

var _app = navigator.appName;
var useragentstring = " " + navigator.userAgent +" ";

	// these lines help to debug
	//document.write("<BR>_app="+ _app +"<Br>");
	//document.write("<BR>useragentstring="+ useragentstring + "<BR>");


	if ((location.protocol == "file:") && (defaultRotatorCodeBase.indexOf('/',0) == 0)){ // if defaultRotatorCodeBase starts with '/' then append 'file://c:' required for IE object tag
		defaultRotatorCodeBase = location.href.substring(0, location.href.indexOf(':',6) + 1) + defaultRotatorCodeBase; 
	}


	if (  (useragentstring.indexOf('Mac',1) >0)  || (useragentstring.indexOf('Safari',1) >0) ){
		defaultVisibility = 'visible';
	}


function TypicalRotator(dataName, rotatorKey, rotatorQuality, rotatorWidth, rotatorHeight){

	CustomRotator(dataName,  rotatorKey, rotatorQuality, rotatorWidth, rotatorHeight, "",  "", "", "", "", "", "", "");

} // end function TypicalRotator


function CustomRotator(dataName, rotatorKey, rotatorQuality, rotatorWidth, rotatorHeight, dataPath, additionalParameters, loadingImage, noJavaHTML, onRotatorStart, rotatorVersion, rotatorId, loadDelay){
	
	// First write a table with the loadingImage to reserve a location for the viewer so rest of page can load.
	// After half a second, replace the loadingImage with the viewer.



	if ((location.protocol == "file:") && (defaultRotatorCodeBase.indexOf('/',0) == 0)) // if defaultRotatorCodeBase starts with '/' then append 'file://c:' required for IE object tag
		defaultRotatorCodeBase = location.href.substring(0, location.href.indexOf(':',6) + 1) + defaultRotatorCodeBase; 
	
	if ((location.protocol == "file:") && (defaultRotatorDataRoot.indexOf('/',0) == 0)) // if defaultRotatorDataRoot starts with '/' then append 'file://c:'
		defaultRotatorDataRoot = location.href.substring(0, location.href.indexOf(':',6) + 1) + defaultRotatorDataRoot; 


 	// set default values if some variables left "" (blank)
	if (dataPath.length > 0) if (dataPath.lastIndexOf('/') != dataPath.length - 1){ dataPath = dataPath + '/';} // dataPath must be '' (blank) or make sure ends with a forward slash '/'
//	if (dataPath.length == 0) dataPath = defaultRotatorDataRoot + dataName + "/";
//	// if dataPath does not start with / then add codebase
//	if ((defaultRotatorDataRootRelativeTo == 'ViewerFolder') && (dataPath.indexOf('/') != 0 )) dataPath = defaultRotatorCodeBase + dataPath;
//	if (rotatorVersion.length == 0) rotatorVersion = defaultRotatorVersion;
	if (rotatorId.length == 0) rotatorId = "RotatorViewer";
 	showLoadingImage = loadingImage;
	if (showLoadingImage.length == 0){
		 showLoadingImage = dataPath + "stillimage-" + rotatorQuality +".gif";
		if (dataPath.length == 0) showLoadingImage =  defaultRotatorDataRoot + dataName + "/" + showLoadingImage;
	}
	if (defaultRotatorDataRootRelativeTo == 'ViewerFolder'){ 
		if (showLoadingImage.indexOf('/') != 0 ) showLoadingImage = defaultRotatorCodeBase + showLoadingImage;
		else if (location.protocol == "file:") showLoadingImage = location.href.substring(0, location.href.indexOf(':',6) + 1) + showLoadingImage;
	}else{
		if ((location.protocol == "file:") && (dataPath.indexOf('/',0) == 0)) // if dataPath starts with '/' then append 'file://c:'
			showLoadingImage = location.href.substring(0, location.href.indexOf(':',6) + 1) + showLoadingImage;
	}




	loadDelay = loadDelay + ""; //make sure loadDelay is a string
	if (loadDelay.length == 0) loadDelay = 500; //(milliseconds)
  
	// Make sure rotatorId does not already exist. if it does, append a number 2,3,4... on end. this is required for multiple viewers on same page.
	for(i=2;i<=10;i++) if (document.getElementById("Table" + rotatorId)){ rotatorId = rotatorId + i;}else{ break; }

	// Make table now to reserve space for Viewer and show Loading Image.



	document.write("<table border=0 cellspacing=0 cellpadding=0 width="+ rotatorWidth +" height="+ rotatorHeight +"><tr><td valign=top align=center id='Table"+ rotatorId +"'><center>");
	document.write("<span id='loadingText"+ rotatorId +"' style='font-size:9px;' ><img name='initialImage"+ rotatorId +"' id='initialImage"+ rotatorId +"' src='" + showLoadingImage + "'  height="+ (rotatorHeight - 20) +" style='z-index:1;' valign=top border=0 alt='3DRotator Viewer Loading'><br> ");
	document.write("<img name='loadingBar"+ rotatorId +"' id='loadingBar"+ rotatorId +"' src='" + defaultRotatorCodeBase + "blankspacer.gif' height=1 width="+ (1) +" style='z-index:1; border-color:#FFFFFF;' border=1><br>Loading...</span>");
 		setTimeout( 'GreenProgressBar(' + rotatorWidth +',"'+ rotatorId +'");' ,200); 
	document.write("</center></td></tr></table>");


	// in half a second call function to replace the table above, allows entire page to load first
	setTimeout( 'ReplaceCustomRotator("' + dataName +'","' + rotatorKey +'","' + rotatorQuality +'",' + rotatorWidth +',' + rotatorHeight +',"' + dataPath +'","' + additionalParameters +'","' + loadingImage +'","' + noJavaHTML +'","' + onRotatorStart +'","' + rotatorVersion +'","' + rotatorId +'");' ,loadDelay); 
 
} // end function CustomRotator


function ReplaceCustomRotator(dataName, rotatorKey, rotatorQuality, rotatorWidth, rotatorHeight, dataPath, additionalParameters, loadingImage, noJavaHTML, onRotatorStart, rotatorVersion, rotatorId){
 
	var completeParameters;
	var initialImage = ""; 

	completeParameters = defaultRotatorParameters + additionalParameters;


	


	// set default values if some variables left "" (blank)
	if (dataPath.length > 0) if (dataPath.lastIndexOf('/') != dataPath.length - 1){ dataPath = dataPath + '/';} // dataPath must be '' (blank) or make sure ends with a forward slash '/'
	if (dataPath.length == 0) dataPath = defaultRotatorDataRoot + dataName + "/";
	if (rotatorVersion.length == 0) rotatorVersion = defaultRotatorVersion;
	if (rotatorId.length == 0) rotatorId = "RotatorViewer"; 
	if (loadingImage.length == 0) loadingImage =  dataPath + "stillimage-" + rotatorQuality +".gif";

	if (defaultRotatorDataRootRelativeTo == 'ViewerFolder'){ 
		if (loadingImage.indexOf('/') != 0 ) loadingImage = defaultRotatorCodeBase + loadingImage;
		else if (location.protocol == "file:") loadingImage = location.href.substring(0, location.href.indexOf(':',6) + 1) + loadingImage;
	}else{
		if ((location.protocol == "file:") && (dataPath.indexOf('/',0) == 0)) // if dataPath starts with '/' then append 'file://c:'
			loadingImage = location.href.substring(0, location.href.indexOf(':',6) + 1) + loadingImage;
	}



	if (noJavaHTML.length == 0){ noJavaHTML = "<img src='";
		if (defaultRotatorDataRootRelativeTo == 'ViewerFolder'){
			 if (dataPath.indexOf('/') != 0 ) noJavaHTML = noJavaHTML + defaultRotatorCodeBase;
			else if (location.protocol == "file:") noJavaHTML = noJavaHTML + location.href.substring(0, location.href.indexOf(':',6) + 1);
		}else{
			if ((location.protocol == "file:") && (dataPath.indexOf('/',0) == 0)) // if dataPath starts with '/' then append 'file://c:'
				noJavaHTML = noJavaHTML + location.href.substring(0, location.href.indexOf(':',6) + 1); 
		}


		noJavaHTML = noJavaHTML + dataPath + "spin2-" + rotatorQuality + ".gif' height="+ (rotatorHeight-20) +"><br><a href='http://www.3drotator.com?j=enablejava' style='font-size:10px;'>Enable&nbsp;Java&nbsp;to&nbsp;Rotate,&nbsp;Zoom,<br>and&nbsp;Measure&nbsp;this&nbsp;Product</a><br>";
	}
	if ((onRotatorStart.length == 0)  ) onRotatorStart = "RotatorOnStart"; // Name of JavaScript function to call after applet loads

// 	if ( ((navigator.javaEnabled() == true) || (useragentstring.indexOf('Netscape',1) > 0) ) && (defaultVisibility == 'hidden') ){ 
 	if ( ((JavaIsEnabled() == true) || (useragentstring.indexOf('Netscape',1) > 0) ) && (defaultVisibility == 'hidden') ){ 
		initialImage = initialImage + "<span id='loadingText"+ rotatorId +"' style='font-size:9px;' ><img name='initialImage"+ rotatorId +"' id='initialImage"+ rotatorId +"' src='" + loadingImage + "'  height="+ (rotatorHeight - 20) +" style='z-index:1;' valign=top border=0 alt='3DRotator Viewer Loading'><br> ";
		initialImage = initialImage + "<img name='loadingBar"+ rotatorId +"' id='loadingBar"+ rotatorId +"' src='" + defaultRotatorCodeBase + "blankspacer.gif' height=1 width="+ (10) +" style='z-index:1; border-color:#00FF00;' border=1><br>Loading...</span>";
		setTimeout( 'GreenProgressBar(' + rotatorWidth +',"'+ rotatorId +'");' ,100); 
	}

	var d = document.getElementById("Table" + rotatorId);
	if (d) d.innerHTML =  initialImage + MakeRotatorCode(dataName, rotatorKey, rotatorQuality, rotatorWidth, rotatorHeight, dataPath, completeParameters, loadingImage, noJavaHTML, onRotatorStart, rotatorVersion, rotatorId);

}// end function ReplaceCustomRotator


function ReplaceTypicalRotator(dataName, rotatorKey, rotatorQuality, rotatorWidth, rotatorHeight){
	ReplaceCustomRotator(dataName, rotatorKey, rotatorQuality, rotatorWidth, rotatorHeight, "", "", "", "", "", "", "");
}// end function ReplaceTypicalRotator


function AdvancedRotator(dataName, rotatorKey, rotatorQuality, rotatorWidth, rotatorHeight, dataPath, completeParameters, loadingImage, noJavaHTML, onRotatorStart, rotatorVersion, rotatorId){
	document.write(MakeRotatorCode(dataName, rotatorKey, rotatorQuality, rotatorWidth, rotatorHeight, dataPath, completeParameters, loadingImage, noJavaHTML, onRotatorStart, rotatorVersion, rotatorId));
} // end function AdvancedRotator


function MakeRotatorCode(dataName, rotatorKey, rotatorQuality, rotatorWidth, rotatorHeight, dataPath, completeParameters, loadingImage, noJavaHTML, onRotatorStart, rotatorVersion, rotatorId){
	var stringToReturn = "";
	var commonParameters = "";
 	var scriptabletext = "MAYSCRIPT scriptable=true"; // make this blank "" if you don't want applet to communicat with your javascript



         	commonParameters = commonParameters + '<PARAM NAME ="id" value="' + rotatorId +'" />';
         	commonParameters = commonParameters + '<PARAM NAME ="uniqueID" value="' + parseInt(1000000 * Math.random()) +'" />';

          	commonParameters = commonParameters + '<PARAM NAME ="onprestart" value="' + defaultRotatorOnPreStart + '" />';

       		commonParameters = commonParameters + '<PARAM NAME ="onstart" value="' + onRotatorStart + '" />';
       		commonParameters = commonParameters + '<PARAM NAME ="user_agent" value="' + useragentstring + '" />';
		commonParameters = commonParameters + "<PARAM NAME ='script_version' VALUE='1.6.13'> ";
 
		commonParameters = commonParameters + "<PARAM NAME ='copyright' value='Copyright (c) http://www.3DRotator.com - All Rights Reserved'>";
		commonParameters = commonParameters + "<PARAM NAME ='Key' VALUE='" + rotatorKey + "'>";
		commonParameters = commonParameters + "<PARAM NAME ='Object_Data_Name' VALUE='" + dataName + "'>";
		commonParameters = commonParameters + "<PARAM NAME ='Object_Data_URL' VALUE='" + dataPath + "'> ";
		commonParameters = commonParameters + "<PARAM NAME ='Object_Data_URL_Relative_To' VALUE='"+ defaultRotatorDataRootRelativeTo +"'> ";  
		commonParameters = commonParameters + "<PARAM NAME ='Quality' VALUE='" + rotatorQuality + "'> ";


		commonParameters = commonParameters + "<PARAM NAME ='ViewerWidth' VALUE='" + rotatorWidth + "'> ";
		commonParameters = commonParameters + "<PARAM NAME ='ViewerHeight' VALUE='" + rotatorHeight + "'> ";
		noJavaHTML = noJavaHTML + '<image name="javaDisabled' + rotatorId +'" id="javaDisabled' + rotatorId +'" src="' + defaultRotatorCodeBase + 'blankspacer.gif"  width=1 height=1 border=0>';

		commonParameters = commonParameters + "<PARAM NAME ='image' VALUE='"+ loadingImage +"'> ";

//		if (( (_app == 'Netscape') && (useragentstring.indexOf('Mac',1) > 0)) || (useragentstring.indexOf('Safari',1) > 0)){// for netscape on Mac, and safari on PC (maybe mac too) must include relative path
		if (( ((_app == 'Netscape') && (useragentstring.indexOf('Firefox',1) < 0)) && (useragentstring.indexOf('Mac',1) > 0)) || (useragentstring.indexOf('Safari',1) > 0)){// for netscape on Mac, and safari on PC (maybe mac too) must include relative path, but not firefox on Mac 
		commonParameters = commonParameters + '<PARAM NAME ="archive" VALUE="' + defaultRotatorCodeBase + rotatorVersion +'.jar,'+ defaultRotatorCodeBase + rotatorVersion +'b.jar">';
		}else{
		commonParameters = commonParameters + '<PARAM NAME ="archive" VALUE="'+ rotatorVersion +'.jar,'+ rotatorVersion +'b.jar">';
		}

		commonParameters = commonParameters + '<PARAM NAME ="rotatorcodebase" VALUE="'+ defaultRotatorCodeBase +'">';



		if (defaultVisibility == "hidden"){
			rotatorWidth = 1;
			rotatorHeight = 1;
		}


// note: in Safari browser _app shows up as = Netscape so use navigator.userAgent
if ( ( (navigator.javaEnabled() == 0)  ) && ( ((useragentstring.indexOf('MSIE',1) >0) && (useragentstring.indexOf('Mac',1) >0)) || (useragentstring.indexOf('Safari',1) >0) || (useragentstring.indexOf('Opera',1) >0))  ) { // then java is disabled on safari browser so just show alt code

		stringToReturn = stringToReturn + noJavaHTML;

}else{ // java is enabled or this is not a safari browser

  
  if  ((_app == 'Firefox') || ((_app == 'Netscape') && (useragentstring.indexOf('Safari',1) < 1))  || (useragentstring.indexOf('Opera',1) >0) || (useragentstring.indexOf('Safari',1) > 0)  ){

		if (((useragentstring.indexOf('Firefox',1) > 1) || (_app == 'Netscape')) || ( ((useragentstring.indexOf('Opera',0) >=0) ))   ) {
			stringToReturn = stringToReturn + '<object style="visibility:visible;" classid="java:' + rotatorVersion +'.class"  ';
		}else{
			stringToReturn = stringToReturn + '<object style="visibility:' + defaultVisibility + ';" classid="java:' + rotatorVersion +'.class"  ';
		}
		stringToReturn = stringToReturn + ' type="application/x-java-applet"'; 

		//stringToReturn = stringToReturn + ' archive="' + rotatorVersion +'.jar,'+ rotatorVersion +'b.jar" '; this causes error, can't find second archive

		stringToReturn = stringToReturn + ' codebase="' + defaultRotatorCodeBase +'" ';
		stringToReturn = stringToReturn + ' standby="Loading 3DRotator Applet..."';
		stringToReturn = stringToReturn + ' width="' + rotatorWidth + '" height="' + rotatorHeight + '"';
		stringToReturn = stringToReturn + ' name="' + rotatorId +'" id="' + rotatorId +'"  >';

    		stringToReturn = stringToReturn + '<PARAM NAME="MAYSCRIPT" VALUE="true">';
 		stringToReturn = stringToReturn + '<PARAM NAME="scriptable" VALUE="true">';
 
		stringToReturn = stringToReturn + commonParameters;
		stringToReturn = stringToReturn + completeParameters;
		
		if ((useragentstring.indexOf('Firefox',1) < 1) || ((useragentstring.indexOf('Firefox',1) > 1) && (navigator.javaEnabled() == 0))){// if firefox dont show noJavaHTML unless java is disabled
			stringToReturn = stringToReturn + noJavaHTML;
		}//end if firefox and javaenabled

			if (_app != 'Netscape'){ // don't show comment tags in netscape on mac otherwise do
			stringToReturn = stringToReturn + "<comment>";
			stringToReturn = stringToReturn + noJavaHTML;
			stringToReturn = stringToReturn + "</comment>";
			} //this causes a doubling up in netscape on mac


		stringToReturn = stringToReturn + "</object>";

    } // end if netscape, firefox, or Safari(since is Netscape) or safari

  else if ( (  (_app == 'Microsoft Internet Explorer')  || (_app == 'MSIE') || (_app == 'Opera')  ) && (useragentstring.indexOf('Mac',1) <0)) { //but not Mac MSIE

		stringToReturn = stringToReturn + '<object style="visibility:visible;" classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"  ';

//		stringToReturn = stringToReturn + ' codebase="http://java.sun.com/update/1.6.0/jinstall-6-windows-i586.cab#Version=6,0,0,99" ';
// above line causes "install java" to pop-up on every page visit even after user cancels the first time. Instead direct them to the enable java page to prompt for this install

		stringToReturn = stringToReturn + ' standby="Loading 3DRotator Applet..."';
		stringToReturn = stringToReturn + ' width="' + rotatorWidth + '" height="' + rotatorHeight + '"';
		stringToReturn = stringToReturn + ' name="' + rotatorId +'" id="' + rotatorId +'"  >';

  		stringToReturn = stringToReturn + '<PARAM NAME="code" VALUE="' + rotatorVersion +'.class">';
  		stringToReturn = stringToReturn + '<PARAM NAME="codebase" VALUE="' + defaultRotatorCodeBase +'" >';

   		stringToReturn = stringToReturn + '<PARAM NAME="MAYSCRIPT" VALUE="true">';
		stringToReturn = stringToReturn + '<PARAM NAME="scriptable" VALUE="true">';

		stringToReturn = stringToReturn + commonParameters;
		stringToReturn = stringToReturn + completeParameters;
		stringToReturn = stringToReturn + noJavaHTML;

		stringToReturn = stringToReturn + "</object>";

//		stringToReturn = stringToReturn + "<applet style='visibility:" + defaultVisibility + ";' code='"+ rotatorVersion +".class' archive='" + rotatorVersion +".jar," + rotatorVersion +"b.jar' codebase ='" + defaultRotatorCodeBase +"' width=" + rotatorWidth + " height=" + rotatorHeight;
//		stringToReturn = stringToReturn + " MAYSCRIPT scriptable=true ";
//		stringToReturn = stringToReturn + " name='" + rotatorId +"' id='" + rotatorId +"' >";
//		stringToReturn = stringToReturn + commonParameters;
//		stringToReturn = stringToReturn + completeParameters;
//		stringToReturn = stringToReturn + noJavaHTML;
//		stringToReturn = stringToReturn + "</applet>";

    } // end else if explorer or opera

  else {// is MSIE on Mac or if the browser is something other than above

		stringToReturn = stringToReturn + "<applet style='visibility:" + defaultVisibility + ";' code='" + rotatorVersion +".class' archive= '"+   rotatorVersion +".jar,"+ rotatorVersion +"b.jar' codebase = '" + defaultRotatorCodeBase +"' width=" + rotatorWidth + " height=" + rotatorHeight ;

		stringToReturn = stringToReturn + " MAYSCRIPT scriptable=true ";
		stringToReturn = stringToReturn + " name='" + rotatorId + "' id='" + rotatorId + "' >";

   		stringToReturn = stringToReturn + commonParameters;
		stringToReturn = stringToReturn + completeParameters;
		stringToReturn = stringToReturn + noJavaHTML;

		stringToReturn = stringToReturn + "</applet>";
    } //end else if browser is something not listed above


} // end if java is enabled on safari


return stringToReturn;
} // end function MakeRotatorCode



var RotatorViewerNamed = new Array(10);
var originalViewerWidth=1;
var originalViewerHeight=1;

function RotatorOnPreStart(rotatorId, viewerWidth, viewerHeight){
	// this function gets called when the 3DRotator Viewer has loaded the first set of views.
 	// Viewer has finished loaded first set of views so now make visible
		originalViewerWidth = viewerWidth;
		originalViewerHeight = viewerHeight;
	if (document.getElementById){
		var changetext = document.getElementById('loadingText' + rotatorId); 
		if (changetext)  changetext.innerHTML = "";

		var changeviewer = document.getElementById(rotatorId); 
		if (changeviewer){
			if (useragentstring.indexOf('Safari',1) < 0){// then is not safari
				changeviewer.style.width = viewerWidth;
				changeviewer.style.height = viewerHeight;
				changeviewer.style.visibility = 'visible';
			}else{
				//causes java.net.MalformedURLException error in safari
				//document.applets.RotatorViewer.style.width = viewerWidth;
				//document.applets[rotatorId].style.width = viewerWidth;

			}
		}
	}
} // end function RotatorOnPreStart

function RotatorHide(rotatorId){
	// this function gets called by a popup menu to go over top of viewer.
	if (document.getElementById){
		var changeviewer = document.getElementById( rotatorId); 
		if (changeviewer){
			if (useragentstring.indexOf('Safari',1) < 0){// then is not safari
				changeviewer.style.width = 1;
				changeviewer.style.height = 1;
				//changeviewer.style.visibility = 'hidden';
			}else{
				//causes java.net.MalformedURLException error in safari but then works second try
				if (changeviewer.style.visibility == "visible"){
					try{
						changeviewer.style.visibility = 'hidden';
					}catch(e){
						setTimeout( 'RotatorHide(rotatorId);', 1000); // if error then try again in a second
					}
				}


			}
		}
	}
} // end function RotatorHide

function RotatorShow(rotatorId){
	// this function gets called when the 3DRotator Viewer has loaded the first set of views.
 	// Viewer has finished loaded first set of views so now make visible
	if (document.getElementById){
		var changeviewer = document.getElementById( rotatorId); 
		if (changeviewer){
			if (useragentstring.indexOf('Safari',1) < 0){// then is not safari
				changeviewer.style.width = originalViewerWidth;
				changeviewer.style.height = originalViewerHeight;
				//changeviewer.style.visibility = 'visible';
			}else{
				changeviewer.style.visibility = 'visible';

			}
		}
	}
} // end function RotatorShow

function RotatorOnStart(rotatorId, viewerWidth, viewerHeight){
	// this function gets called when the 3DRotator Viewer has loaded all views and is ready.

 	if (document.getElementById){
		 RotatorViewerNamed[rotatorId] = document.getElementById(rotatorId);

		// now JavaScript anywhere on your page can test to see if the Rotator Viewer has finished loading with a line like this
		if (RotatorViewerNamed[rotatorId] != null){
			// Viewer has finished loading
			// do something
		}else{
			// Viewer has NOT finished loading yet
			// do something different
		}
	}		
 
} // end function RotatorOnStart



function GreenProgressBar( maxlength, rotatorId){

	if (document.getElementById){
		var barimage = document.getElementById('loadingBar' + rotatorId); 
		if (barimage){
			if (barimage.style.visibility != 'hidden'){
				barimage.width = barimage.width + 4;
				barimage.style['border-color'] = '#00FF00';
				if (barimage.width < maxlength){
				 	setTimeout( 'GreenProgressBar(' + maxlength +',"'+ rotatorId +'");' ,1000); 
				}else{
					barimage.style.visibility = 'hidden';
				}

			}
		}


		var changeimage = document.getElementById('javaDisabled' + rotatorId); 
		if  ((changeimage) && (useragentstring.indexOf('Netscape',1) > 1)){ 
			if (changeimage.offsetTop > 1){ 
				var changetext = document.getElementById('loadingText' + rotatorId);
				if (changetext) changetext.innerHTML = "";//changetext.innerHTML + changeimage.offsetTop +"<br>";
			}
		}





	}// end if getElementById
}// end function greenprogressbar



function JavaIsEnabled(){

	if ((useragentstring.indexOf('Firefox',1) > 0) || (useragentstring.indexOf('Opera',1) > 0)){
		if (navigator.javaEnabled() == true){ 
			return true;
		}else{
			return false;
		}
	}


 	if (window.ActiveXObject) {
       		try {
             		if (eval("new ActiveXObject('JavaPlugin.FamilyVersionSupport');")) return true; // then java is installed and enabled
	       	}catch(e) {}
	}
	return false;
}// end function JavaIsEnabled





function TypicalImager(imageName, hiResImageName, imagePath, measureDimension, measureUnits, rotatorKey, rotatorWidth, rotatorHeight){

	CustomImager(imageName, hiResImageName, imagePath, measureDimension, measureUnits, rotatorKey, rotatorWidth, rotatorHeight, "",  "", "", "", "", "", "", "");

} // end function TypicalImager





function CustomImager(imageName, hiResImageName, imagePath, measureDimension, measureUnits, rotatorKey, rotatorWidth, rotatorHeight, dataPath, additionalParameters, loadingImage, noJavaHTML, onRotatorStart, rotatorVersion, rotatorId, loadDelay){


	if (imagePath.length > 0) if (imagePath.lastIndexOf('/') != imagePath.length - 1){ imagePath = imagePath + '/';} // imagePath must be '' (blank) or make sure ends with a forward slash '/'

	if (loadingImage.length == 0) loadingImage = imagePath + imageName;
		showLoadingImage = loadingImage;
	if (((defaultImagePathRelativeTo == 'ViewerFolder') && (loadingImage.indexOf('/') != 0 )) && (defaultRotatorDataRootRelativeTo != 'ViewerFolder')) loadingImage = defaultRotatorCodeBase + loadingImage;

	if ((defaultImagePathRelativeTo == 'ViewerFolder') && (showLoadingImage.indexOf('/') != 0 )) showLoadingImage = defaultRotatorCodeBase + showLoadingImage;
	if (noJavaHTML.length == 0) noJavaHTML = "<img src='"+ showLoadingImage + "' height="+ (rotatorHeight - 20)  +"><br><a href='http://www.3drotator.com?j=enablejava' style='font-size:10px;'>Enable Java to Zoom-in<br>and Measure this Image</a><br> ";

	additionalParameters = additionalParameters +"<PARAM name='Image_Name' value='" + imageName + "'>";
	additionalParameters = additionalParameters +"<PARAM name='Hi_Res_Image_Name' value='" + hiResImageName + "'>";
	additionalParameters = additionalParameters +"<PARAM name='Image_Path' value='" + imagePath + "'>";// do not start with '/' for relative to
	additionalParameters = additionalParameters +"<PARAM name='Image_Path_Relative_To' value='"+ defaultImagePathRelativeTo +"'>"; 
	additionalParameters = additionalParameters +"<PARAM name='Measure_Dimension' value='" + measureDimension + "'>";
	additionalParameters = additionalParameters +"<PARAM name='Measure_Units' value='" + measureUnits + "'>";
 	
	dataName = ""; // used for 3DRotator not 2DImager
	rotatorQuality = ""; // used for 3DRotator not 2DImager
	dataPath = ""; // used for 3DRotator not 2DImager

	CustomRotator(dataName, rotatorKey, rotatorQuality, rotatorWidth, rotatorHeight, dataPath, additionalParameters, loadingImage, noJavaHTML, onRotatorStart, rotatorVersion, rotatorId, loadDelay);

} // end function CustomImager
