


/*
    Functions in this file depend on the following global variables being set
		externally.
		
			- globalWidth_internal
			- globalHeight_internal
			- imgWidth_internal
			- imgHeight_internal
			
		For example:
			var globalWidth_internal        = "8000";
			var globalHeight_internal       = "6000";
			var imgWidth_internal           = "400";
			var imgHeight_internal          = "400";
	
*/


// ------------------------------------------------------------------------
// GLOBAL DECLARATIONS
// ------------------------------------------------------------------------

// Global Variables


var newimgName = new Array();
var newimgWidth = new Array();
var newimgHeight = new Array();
var newcloseupWidth = new Array();
var newcloseupHeight = new Array();
var newbuttonsPath = new Array();
var newbuttonColor = new Array();



var fullAxsImgUrl = new Array();
var fullAxsImgResizeUrl = new Array();
var globalWidth_internal= new Array();
var globalHeight_internal= new Array();
var imgWidth_internal= new Array();
var imgHeight_internal= new Array();



var resized= new Array();
var resizedWidth= new Array();
var resizedHeight= new Array();
var thumbnailName = new Array();



// Convenience variables
var globalWidthCenter = new Array();
var globalHeightCenter = new Array();
var imgWidthCenter = new Array();
var imgHeightCenter = new Array();

// Miscellaneous variables
var isN4 = (window.Event)? true : false ;



// Demo variables and default values
var maxRedFactor = new Array();
var redFactor = new Array();

var oldGlobalWidthCenter = new Array();
var oldGlobalHeightCenter = new Array();

var newGlobalWidthCenter = new Array();
var newGlobalHeightCenter = new Array();

var demoImg_x_click = new Array();
var demoImg_y_click = new Array();

var canPanLeft = new Array();
var canPanRight = new Array();
var canPanUp = new Array();
var canPanDown = new Array();
var canZoomIn = new Array();
var canZoomOut = new Array();

var zoomIn_onClick = new Array();
var zoomOut_onClick = new Array();

var eyespyImgHost  = new Array();



// ------------------------------------------------------------------------
// FUNCTION: initDemo
// ------------------------------------------------------------------------
function initDemo(imgName_param, globalWidth_param, globalHeight_param, imgWidth_param, imgHeight_param,n)
{
	
	// Set global variables
	globalWidth_internal[n] 	= globalWidth_param;
	globalHeight_internal[n] 	= globalHeight_param;
	imgWidth_internal[n] 	= imgWidth_param;
	imgHeight_internal[n] 	= imgHeight_param;
	var imgName_param_urlencoded = urlencode(imgName_param);
	fullAxsImgUrl[n] = imgHostScript + "?getjpeg&" + imgName_param_urlencoded;
        fullAxsImgResizeUrl[n] = imgHostScript + "?resizeimage&" + imgName_param_urlencoded;
        //allow for resize 
	// Reset global variables in case image has been changed
	globalWidthCenter[n]  = Math.round(globalWidth_internal[n] / 2);
	globalHeightCenter[n] = Math.round(globalHeight_internal[n] / 2);
	imgWidthCenter[n]     = Math.round(imgWidth_internal[n] / 2);
	imgHeightCenter[n]    = Math.round(imgHeight_internal[n] / 2);

        eyespyImgHost[n] = '' ;	
	

        if (imgHostScript.substring (0,4) == 'http') {
             var endOfHostName = imgHostScript.indexOf ('/', 8) ;
             if (newbuttonsPath[n].substring (0,4) != 'http') {
               eyespyImgHost[n] = imgHostScript.substring (0, endOfHostName) ;
             }
        }
	
	// Reset all defaults
	zoomIn_onClick[n]     = true;
	zoomOut_onClick[n]    = false;
	
	demoImg_x_click[n] = Math.round(imgWidth_internal[n] / 2);
	demoImg_y_click[n] = Math.round(imgHeight_internal[n] / 2);
	
	oldGlobalWidthCenter[n]  = Math.round(globalWidth_internal[n] / 2);
	oldGlobalHeightCenter[n] = Math.round(globalHeight_internal[n] / 2);
	
	newGlobalWidthCenter[n] 	= Math.round(globalWidth_internal[n] / 2);
	newGlobalHeightCenter[n] = Math.round(globalHeight_internal[n] / 2);
	

	// Calculate an appropriate initial reduction factor.
	maxRedFactor[n]  = 1024;  // Randomly picked large (very large) reduction factor to start at
	while ( ((globalWidth_internal[n] / maxRedFactor[n]) < imgWidth_internal[n]) || ((globalHeight_internal[n] / maxRedFactor[n]) < imgHeight_internal[n]) )
	{		
		maxRedFactor[n] = maxRedFactor[n] / 2;
	}
	

	if (maxRedFactor[n] < 1)
	{
		maxRedFactor[n] = 1;
	}
	 
	// Set redFactor to max soom out
	redFactor[n] = maxRedFactor[n]; 
	
	// Update canXXX variables
	updateCanXXXVars(n);
}




// ------------------------------------------------------------------------
// FUNCTION: resetDemo(n)
// ------------------------------------------------------------------------
function resetDemo(imgName_param, globalWidth_param, globalHeight_param, imgWidth_param, imgHeight_param,n)
{
        initDemo(imgName_param, globalWidth_param, globalHeight_param, imgWidth_param, imgHeight_param,n);
        document.images["demoImg"+n].src = thumbnailName[n];       // Load demo image
}





// ------------------------------------------------------------------------
// FUNCTION: demoZoomIn(n);
// ------------------------------------------------------------------------
function demoZoomIn(n)
{
	redFactor[n] = redFactor[n] / 2;
	if (redFactor[n] < 1)
	{
		redFactor[n] = 1;
	}
	updateCanXXXVars(n);

	document.images["demoImg"+n].src = getDemoImgUrl(n);	// Load demo image

	
}
		
// ------------------------------------------------------------------------
// FUNCTION: demoZoomOut(n);
// ------------------------------------------------------------------------
function demoZoomOut(n)
{
        redFactor[n] = redFactor[n] * 2;
        updateCanXXXVars(n);
        document.images["demoImg"+n].src = getDemoImgUrl(n);      // Load demo image

	if (redFactor[n] >= maxRedFactor[n])
        {
          resetDemo(newimgName[n], newimgWidth[n], newimgHeight[n], newcloseupWidth[n], newcloseupHeight[n],n);
        }
        
}


// ------------------------------------------------------------------------
// FUNCTION: demoPanLeft
// ------------------------------------------------------------------------
function demoPanLeft(n)
{
	newGlobalWidthCenter[n]  = oldGlobalWidthCenter[n]  - (redFactor[n] * (imgWidth_internal[n] / 2));

	// Left boundary check
	if (newGlobalWidthCenter[n] - ((imgWidth_internal[n] / 2) * redFactor[n]) < 0)
	{
		newGlobalWidthCenter[n] = (imgWidth_internal[n] / 2) * redFactor[n];
	}
	
	
	newGlobalWidthCenter[n] = Math.round(newGlobalWidthCenter[n]);

	updateCanXXXVars(n);
	
	oldGlobalWidthCenter[n] = newGlobalWidthCenter[n];
	
	
	document.images["demoImg"+n].src = getDemoImgUrl(n);	// Load demo image
}


// ------------------------------------------------------------------------
// FUNCTION: demoPanRight
// ------------------------------------------------------------------------
function demoPanRight(n)
{
	newGlobalWidthCenter[n]  = oldGlobalWidthCenter[n]  + (redFactor[n] * (imgWidth_internal[n] / 2));
	
	// Right boundary check
	if (newGlobalWidthCenter[n] + ((imgWidth_internal[n] * redFactor[n]) / 2) > globalWidth_internal[n])
	{
		newGlobalWidthCenter[n] = globalWidth_internal[n] - ((imgWidth_internal[n] * redFactor[n]) / 2);
	}

	newGlobalWidthCenter[n] = Math.round(newGlobalWidthCenter[n]);

	updateCanXXXVars(n);
	
	oldGlobalWidthCenter[n] = newGlobalWidthCenter[n];
	
	
	document.images["demoImg"+n].src = getDemoImgUrl(n);	// Load demo image
}


// ------------------------------------------------------------------------
// FUNCTION: demoPanUp
// ------------------------------------------------------------------------
function demoPanUp(n)
{
	newGlobalHeightCenter[n]  = oldGlobalHeightCenter[n] - (redFactor[n] * (imgHeight_internal[n] / 2));

	// Top boundary check
	if (newGlobalHeightCenter[n] - ((imgHeight_internal[n] * redFactor[n]) / 2) < 0)
	{
		newGlobalHeightCenter[n] = (imgHeight_internal[n] / 2) * redFactor[n];
	}
	
	newGlobalHeightCenter[n] = Math.round(newGlobalHeightCenter[n]);
	updateCanXXXVars(n);

	oldGlobalHeightCenter[n] = newGlobalHeightCenter[n];
	
	
	document.images["demoImg"+n].src = getDemoImgUrl(n);	// Load demo image
}

// ------------------------------------------------------------------------
// FUNCTION: demoPanDown
// ------------------------------------------------------------------------
function demoPanDown(n)
{
	newGlobalHeightCenter[n]  = oldGlobalHeightCenter[n]  + (redFactor[n] * (imgHeight_internal[n] / 2));

	// Bottom boundary check
	if (newGlobalHeightCenter[n] + ((imgHeight_internal[n] * redFactor[n]) / 2) > globalHeight_internal[n])
	{
		newGlobalHeightCenter[n] = globalHeight_internal[n]  - (imgHeight_internal[n] * redFactor[n]) / 2;
	}
	
	newGlobalHeightCenter[n] = Math.round(newGlobalHeightCenter[n]);
	updateCanXXXVars(n);

	oldGlobalHeightCenter[n] = newGlobalHeightCenter[n];
	
	
	document.images["demoImg"+n].src = getDemoImgUrl(n);	// Load demo image
}


// ------------------------------------------------------------------------
// FUNCTION: updateCanXXXVars(n)
// ------------------------------------------------------------------------
function updateCanXXXVars(n)
{
	// Determine canZoomIn
	if (redFactor[n] <= 1)
		canZoomIn[n] = false;
	else
		canZoomIn[n] = true;

	// Determine canZoomOut
	if (redFactor[n] >= maxRedFactor[n])
		canZoomOut[n] = false;
	else
		canZoomOut[n] = true;

	// Determine can panLeft
	if (newGlobalWidthCenter[n] - ((imgWidth_internal[n] / 2) * redFactor[n]) <= 1)
		canPanLeft[n] = false;
	else
		canPanLeft[n] = true;

	// Determine can panRight
	if (newGlobalWidthCenter[n] + ((imgWidth_internal[n] * redFactor[n]) / 2) >= globalWidth_internal[n] - 1)
		canPanRight[n] = false;
	else
		canPanRight[n] = true;

	// Determine can panUp
	if (newGlobalHeightCenter[n] - ((imgHeight_internal[n] * redFactor[n]) / 2) <= 1)
		canPanUp[n] = false;
	else
		canPanUp[n] = true;

	// Determine can panDown
	if (newGlobalHeightCenter[n] + ((imgHeight_internal * redFactor[n]) / 2) >= globalHeight_internal[n] - 1)
		canPanDown[n] = false;
	else
		canPanDown[n] = true;
}


// ------------------------------------------------------------------------
// FUNCTION: demoImgClick
// ------------------------------------------------------------------------
function demoImgClick(e,n)
{
	// Get the click coordinate
	
	if (isN4)
	{
		// Handle Netscape 6 and other browers that look like netscape 4, but don't work
		if (document.anchors["demoImgAnchor"+n].x == null)
		{
			// Default to center of image click.
			demoImg_x_click[n] = Math.round(imgWidth_internal[n] / 2);
			demoImg_y_click[n] = Math.round(imgHeight_internal / 2);
		}
		else
		{
			// Netscape 4
			demoImg_x_click[n] =  e.pageX - document.anchors["demoImgAnchor"+n].x;
			demoImg_y_click[n] =  e.pageY - document.anchors["demoImgAnchor"+n].y;
		}

	}
	else
	{
		// Hopefully IE 4 or 5
		demoImg_x_click[n] =  event.offsetX;
		demoImg_y_click[n] =  event.offsetY;
	}
	
	// Uncomment to debug image click coordinate
	

      //  alert("demoImg_x_click[n]: " + demoImg_x_click[n] + ", demoImg_y_click[n]: " + demoImg_y_click[n] + ", redFactor[n]=" + redFactor[n]);
	

	redFactorX = newimgWidth[n] / newcloseupWidth[n];
	redFactorY = newimgHeight[n] / newcloseupHeight[n];

	// X coordinate transformation
	if (resized[n] != true)
	{
	  if (demoImg_x_click[n] < imgWidthCenter[n])
	  {
		newGlobalWidthCenter[n] = oldGlobalWidthCenter[n] - ((imgWidthCenter[n] - demoImg_x_click[n]) * redFactor[n] );
	  }
	  else
	  {
		newGlobalWidthCenter[n] = oldGlobalWidthCenter[n] + ((demoImg_x_click[n] - imgWidthCenter[n]) * redFactor[n]);
	  }
	
	  // Y coordinate transformation
	  if (demoImg_y_click[n] < imgHeightCenter[n] )
	  {
		newGlobalHeightCenter[n] = oldGlobalHeightCenter[n] - ((imgHeightCenter[n] - demoImg_y_click[n]) * redFactor[n] );
	  }
	  else
	  {
		newGlobalHeightCenter[n] = oldGlobalHeightCenter[n] + ((demoImg_y_click[n] - imgHeightCenter[n]) * redFactor[n]);
	  }
	}
	else
	{
	  if (demoImg_x_click[n] < imgWidthCenter[n])
	  {
		newGlobalWidthCenter[n] = oldGlobalWidthCenter[n] - ((imgWidthCenter[n] - demoImg_x_click[n]) * redFactorX );
	  }
	  else
	  {
		newGlobalWidthCenter[n] = oldGlobalWidthCenter[n] + ((demoImg_x_click[n] - imgWidthCenter[n]) * redFactorX);
	  }
	
	  // Y coordinate transformation
	  if (demoImg_y_click[n] < imgHeightCenter[n] )
	  {
		newGlobalHeightCenter[n] = oldGlobalHeightCenter[n] - ((imgHeightCenter[n] - demoImg_y_click[n]) * redFactorY );
	  }
	  else
	  {
		newGlobalHeightCenter[n] = oldGlobalHeightCenter[n] + ((demoImg_y_click[n] - imgHeightCenter[n]) * redFactorY);
	  }
	}
	


	// Calculate and check reduction factor if needed.
	// NOTE:  May need additional logic here for upper bounds checking of scale.
	if (resized[n] != true)
	{
	  if (zoomIn_onClick[n] == true)
	  {
		redFactor[n] = (String)(redFactor[n] / 2);
	  }

	  if (zoomOut_onClick[n] == true)
	  {
		redFactor[n] = (String)(redFactor[n] * 2);
	  }
  
	  if (redFactor[n] < 1)
	  {
		redFactor[n] = 1; 
	  }
	}
	else
	  resized[n] = false;


	
	// Boundary Checks
	// Right boundary check
	if (newGlobalWidthCenter[n] + ((imgWidth_internal[n] * redFactor[n]) / 2) > globalWidth_internal[n])
	{
		newGlobalWidthCenter[n] = globalWidth_internal[n] - ((imgWidth_internal[n] * redFactor[n]) / 2);
	}

	// Left boundary check
	if (newGlobalWidthCenter[n] - ((imgWidth_internal[n] / 2) * redFactor[n]) < 0)
	{
		newGlobalWidthCenter[n] = (imgWidth_internal[n] / 2) * redFactor[n];
	}

	// Bottom boundary check
	if (newGlobalHeightCenter[n] + ((imgHeight_internal[n] * redFactor[n]) / 2) > globalHeight_internal[n])
	{
		newGlobalHeightCenter[n] = globalHeight_internal[n]  - (imgHeight_internal[n] * redFactor[n]) / 2;
	}

	// Top boundary check
	if (newGlobalHeightCenter[n] - ((imgHeight_internal[n] * redFactor[n]) / 2) < 0)
	{
		newGlobalHeightCenter[n] = (imgHeight_internal[n] / 2) * redFactor[n];
	}

	// Set variables. Needed?
	newGlobalWidthCenter[n] = Math.round (newGlobalWidthCenter[n]) ;
	newGlobalHeightCenter[n] = Math.round (newGlobalHeightCenter[n]) ;
	oldGlobalWidthCenter[n] = Math.round (newGlobalWidthCenter[n]) ;
	oldGlobalHeightCenter[n] = Math.round (newGlobalHeightCenter[n]) ;
	
	updateCanXXXVars(n);

	
	document.images["demoImg"+n].src = getDemoImgUrl(n);	// Load demo image

return;
}



// ------------------------------------------------------------------------
// FUNCTION: getDemoImgUrl
// ------------------------------------------------------------------------
function getDemoImgUrl(n)
{	


	return fullAxsImgUrl[n] +
							 "&" + globalWidth_internal[n] +
							 "&" + globalHeight_internal[n] + 
							 "&" + imgWidth_internal[n] +
							 "&" + imgHeight_internal[n] +
							 "&" + redFactor[n] +
							 "?" + newGlobalWidthCenter[n] +
							 "," + newGlobalHeightCenter[n];

}

// ------------------------------------------------------------------------
// FUNCTION: replace(string,text,by)
// replace function that does not depend on javascript 1.2 
// ------------------------------------------------------------------------

function replace(string,text,by) 
{
// Replaces text with by in string
    var strLength = string.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return string;
 
    var i = string.indexOf(text);
    if ((!i) && (text != string.substring(0,txtLength))) return string;
    if (i == -1) return string;
	
    var newstr = string.substring(0,i) + by;
    if (i+txtLength < strLength)
        newstr += replace(string.substring(i+txtLength,strLength),text,by);

    return newstr;
}


// ------------------------------------------------------------------------
// FUNCTION: urlencode(str)
// function to force encoding of the "+" into %2B
// escape on IE does not encode "+", which poses problems 
// ------------------------------------------------------------------------
function urlencode(str) 
{	
	var magic = new String();
	magic = 'BADIEBUG';
	str = "" + str;
	encodedstr = new String(str);
	//replace all + by magic
	encodedstr = replace(encodedstr,'+',magic);
	//escape the string
	encodedstr = escape(encodedstr);
	//replace all magic by %2B
	encodedstr = replace(encodedstr,magic,'%2B');
	
	return encodedstr
}



// ------------------------------------------------------------------------
//FUNCTION: UpdateAllHomeButtons(n)
// ------------------------------------------------------------------------
function updateAllHomeBtns(buttonsPathl,n)
{
	// Zoom In
	if (canZoomIn[n])
		document.images["btn_zoomIn"+n].src = eyespyImgHost[n] + buttonsPathl + "/zoomin.gif";
	else
		document.images["btn_zoomIn"+n].src = eyespyImgHost[n] + buttonsPathl + "/zoomin_f.gif";
	
	// Zoom Out
	if (canZoomOut[n])
		document.images["btn_zoomOut"+n].src = eyespyImgHost[n] + buttonsPathl + "/zoomout.gif";
	else
		document.images["btn_zoomOut"+n].src = eyespyImgHost[n] + buttonsPathl + "/zoomout_f.gif";

	// Pan Left
	if (canPanLeft[n])
		document.images["btn_panLeft"+n].src = eyespyImgHost[n] + buttonsPathl + "/panleft.gif";
	else
		document.images["btn_panLeft"+n].src = eyespyImgHost[n] + buttonsPathl + "/panleft_f.gif";
	
	// Pan Right
	if (canPanRight[n])
		document.images["btn_panRight"+n].src = eyespyImgHost[n] + buttonsPathl + "/panright.gif";
	else
		document.images["btn_panRight"+n].src = eyespyImgHost[n] + buttonsPathl + "/panright_f.gif";
	
	// Pan Up
	if (canPanUp[n])
		document.images["btn_panUp"+n].src = eyespyImgHost[n] + buttonsPathl + "/panup.gif";
	else
		document.images["btn_panUp"+n].src = eyespyImgHost[n] + buttonsPathl + "/panup_f.gif";
	
	// Pan Down
	if (canPanDown[n])
		document.images["btn_panDown"+n].src = eyespyImgHost[n] + buttonsPathl + "/pandown.gif";
	else
		document.images["btn_panDown"+n].src = eyespyImgHost[n] + buttonsPathl + "/pandown_f.gif";

        document.images["btn_Reset"+n].src = eyespyImgHost[n] + buttonsPathl + "/reset.gif";
}


// ------------------------------------------------------------------------
// FUNCTION: getResizedSize
// ------------------------------------------------------------------------
function getResizedSize(n)
{	
	var widthRatio = newimgWidth[n] / newcloseupWidth[n];
  	var heightRatio = newimgHeight[n] / newcloseupHeight[n];	
  	if (widthRatio > heightRatio)
		{
	 	resizedWidth[n] = newimgWidth[n] / widthRatio;
	 	resizedHeight[n] = newimgHeight[n] / widthRatio;
		}
  	else
		{
		resizedWidth[n] = newimgWidth[n] / heightRatio;
	 	resizedHeight[n] = newimgHeight[n] / heightRatio;
		}
}

// ------------------------------------------------------------------------
// FUNCTION: initeyespy
// ------------------------------------------------------------------------
function initeyespy(n) {
  if (typeof n == 'undefined')
	n=0;

 	getResizedSize(n);
 	setresized(n);
  	initDemo(newimgName[n], newimgWidth[n], newimgHeight[n], newcloseupWidth[n], newcloseupHeight[n],n); 
  	updateAllHomeBtns(newbuttonsPath[n],n);
}



// ------------------------------------------------------------------------
// FUNCTION: setresized
// ------------------------------------------------------------------------
function setresized(n) {
 	var difWidth = resizedWidth[n] - newcloseupWidth[n];
	var difHeight = resizedHeight[n] - newcloseupHeight[n];
	if (difWidth < 0)
		difWidth = difWidth * (-1);
	if (difHeight < 0)
		difHeight = difHeight * (-1);
	
	
	if (difWidth > 1 || difHeight > 1)
		resized[n] = true;
	else 
		resized[n] = false;
}


// ------------------------------------------------------------------------
// FUNCTION: eyespyviewer
// ------------------------------------------------------------------------
function eyespyviewer(n) {

   if (typeof n == 'undefined')
	n=0;

    if (typeof imgName == 'string')
	{    	 
	newimgName[0] = imgName;
	}
    else 
	newimgName = imgName;

    if (typeof imgWidth == 'string')
	{    	 
	newimgWidth[0] = imgWidth;
	}
    else 
	newimgWidth = imgWidth;

    if (typeof imgHeight == 'string')
	{    	 
	newimgHeight[0] = imgHeight;
	}
    else 
	newimgHeight = imgHeight;

    if (typeof closeupWidth == 'string')
	{    	 
	newcloseupWidth[0] = closeupWidth;
	}
    else 
	newcloseupWidth = closeupWidth;

    if (typeof closeupHeight == 'string')
	{    	 
	newcloseupHeight[0] = closeupHeight;
	}
    else 
	newcloseupHeight = closeupHeight;

    if (typeof buttonsPath == 'string')
	{    	 
	newbuttonsPath[0] = buttonsPath;
	}
    else 
	newbuttonsPath  = buttonsPath;

 
  
 
  var tableWidth = newcloseupWidth[n] - 0 + 1 ;
  var tableHeight = newcloseupHeight[n];


    if (typeof thumbnailName[n] == 'undefined')
       thumbnailName[n] = imgHostScript + '?resizeimage&' + urlencode(newimgName[n]) +  '&' + 'wsx=' + newcloseupWidth[n] + '&' + 'wsy=' + newcloseupHeight[n] ;
 
  var popupUrl = imgHostScript + '?launchpad&' + urlencode(newimgName[n]) + '&' + newcloseupWidth[n] + '&' + newcloseupHeight[n];
 
  document.writeln (' <DIV align="center">');
  document.writeln ('  <TABLE width="' + 199 + '" border="0" cellspacing="0" cellpadding="0" TITLE = "Image enlargement table" SUMMARY = "This table contains a row of buttons to control the image enlargement system.">') ;
  document.writeln ('    <TR>') ;
  document.writeln ('      <TD  align="center" colspan=7 width="' + 199 + '" height="' + tableHeight + '" border="0"><A name="demoImgAnchor' +n + '" href="' + popupUrl + '" target="_blank" onClick=" demoImgClick(event,' +n+'); updateAllHomeBtns(newbuttonsPath[' +n+'],' +n+'); return false;"><IMG src="' + thumbnailName[n] +  '" name="demoImg' + n + '" width="' + newcloseupWidth[n] + '" height="' + newcloseupHeight[n] + '" alt="Zoom Image" border="2"></A></TD>') ;
  
  document.writeln ('    </TR><tr>') ;
  document.writeln ('      <td align="center"><A') ;
  document.writeln ('        href="' + popupUrl + '" target="_blank" onClick="demoZoomIn(' +n+'); updateAllHomeBtns(newbuttonsPath[' +n+'],' +n+'); return false;"><IMG src="' + newbuttonsPath[n] + '/zoomin.gif"   width="22" height="24" alt="Zoom In"  longdesc = "graphics.cfm#zoomin"  name="btn_zoomIn' +n +'"   border="0"></A><A') ;

 document.writeln ('        href="' + popupUrl + '" target="_blank" onClick="demoZoomOut(' +n+');   updateAllHomeBtns(newbuttonsPath[' +n+'],' +n+'); return false;"><IMG src="' + newbuttonsPath[n] + '/zoomout.gif"  width="21" height="24" alt="Zoom Out"  longdesc = "graphics.cfm#zoomout" name="btn_zoomOut' +n +'"   border="0"></A><A') ;

  document.writeln ('        href="' + popupUrl + '" target="_blank" onClick="demoPanLeft(' +n+') ;  updateAllHomeBtns(newbuttonsPath[' +n+'],' +n+'); return false;"><IMG src="' + newbuttonsPath[n] + '/panleft.gif"  width="21" height="24" alt="Pan Left"  longdesc = "graphics.cfm#panleft" name="btn_panLeft' +n +'"   border="0"></A><A') ;

document.writeln ('        href="' + popupUrl + '" target="_blank" onClick="demoPanRight(' +n+');  updateAllHomeBtns(newbuttonsPath[' +n+'],' +n+'); return false;"><IMG src="' + newbuttonsPath[n] + '/panright.gif" width="20" height="24" alt="Pan Right"  longdesc = "graphics.cfm#panright" name="btn_panRight' +n +'"  border="0"></A><A') ;

  document.writeln ('        href="' + popupUrl + '" target="_blank" onClick="demoPanUp(' +n+');     updateAllHomeBtns(newbuttonsPath[' +n+'],' +n+'); return false;"><IMG src="' + newbuttonsPath[n] + '/panup.gif"    width="21" height="24" alt="Pan Up"  longdesc = "graphics.cfm#panup"   name="btn_panUp' +n +'"     border="0"></A><A') ;

  document.writeln ('        href="' + popupUrl + '" target="_blank" onClick="demoPanDown(' +n+');   updateAllHomeBtns(newbuttonsPath[' +n+'],' +n+'); return false;"><IMG src="' + newbuttonsPath[n] + '/pandown.gif"  width="26" height="24" alt="Pan Down" longdesc = "graphics.cfm#pandown" name="btn_panDown' +n +'"   border="0"></A><A') ;

  document.writeln ('        href="' + popupUrl + '" target="_top" onClick=" setresized(' +n+'); resetDemo(newimgName[' +n+'], newimgWidth[' +n+'], newimgHeight[' +n+'], newcloseupWidth[' +n+'], newcloseupHeight[' +n+'],'+n+'); updateAllHomeBtns(newbuttonsPath[' +n+'],' +n+'); return false;"><IMG src="' + newbuttonsPath[' +n+'] + '/reset.gif" width="68" height="24" alt="Reset" longdesc = "graphics.cfm#reset" name="btn_Reset' +n +'"  border="0"></a></td></TR>') ;

  document.writeln ('</table>') ;
  document.writeln (' </DIV>');

  
}


<!--
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v3.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//-->
