
var g_currentImage;
var g_mouseX;
var g_mouseY;
var g_disableHide = false;
var g_largeImageKeys 		= Array();
var g_largeImageNames 	= Array();
var g_largeImageLoaded 	= Array();
var g_startPosition;
var g_endPosition; 
var g_increments = Array();
var g_imageKey;
var g_imageStep;
var g_nextImage = false;
var g_imageStepCount = 10;
var g_imageStepDelay = 20;
var g_loginImageKey;
var g_slideShowRunning 	= false;
var g_slideShowTimeout 	= false;
var g_playIcon 					= '/eswpublic/images/default_icons/play.png';
var g_pauseIcon 				= '/eswpublic/images/default_icons/pause.png';
var g_slideshowDelay		= 5000;




function showLargeImage(key)
{
	var name 				= 'largeimage_' + key;
	var elt 				= document.getElementById(name);
//	elt.style.top 	= (g_mouseY + 5) + 'px';
//	elt.style.left 	= (g_mouseX + 5) + 'px';		
	g_currentImage 	= elt;
	elt.style.visibility = 'visible';
}
function hideLargeImage(key)
{
	if(g_disableHide == false)
	{
		if(g_slideShowRunning)
		{
			clearTimeout(g_slideShowTimeout);		
			g_slideShowRunning = false;
		
			for(var i = 0; i < g_largeImageKeys.length; i++)
			{
				var largePlayName = 'largeplay_' + g_largeImageKeys[i];
				var largePlayElement = document.getElementById(largePlayName);
				largePlayElement.src = g_playIcon;
			}
		}
		
		
		var controlId = 'largecontrol_' + key;
		controlElement = document.getElementById(controlId);
		if(controlElement)
		{
			controlElement.style.display='none';
			setTimeout('compressStep()',g_imageStepDelay);				
		}
		else
		{
			var name = 'largeimage_' + key;
			var elt = document.getElementById(name);
			elt.style.visibility = 'hidden';			
		}
	}
	g_disableHide = false;
	if(g_actualMovingImage)
	{
		g_actualMovingImage.style.cursor = 'url(/eswpublic/cursors/zoomout.cur),pointer';
	}
}

function getImageStart(key)
{
	var name = 'image_' + key;	
	var imageElement = document.getElementById(name);
	
	var myTarget = imageElement;
	var top = 0;
	var left = 0;
	while(myTarget!= document.body) { 
     top += myTarget.offsetTop; 
     left += myTarget.offsetLeft; 
     myTarget = myTarget.offsetParent; 
  } 

	if(imageElement)
	{
		return Array(left,top,imageElement.offsetWidth,imageElement.offsetHeight,imageElement.offsetWidth,imageElement.offsetHeight);
	}
	return Array(10,10,100,100);
}
function getImageEnd(key)
{
	var name = 'largeimage_' + key;
	var elt = document.getElementById(name);
	
	
	var controlName 		= 'largecontrol_' + key;
	var controlElement 	= document.getElementById(controlName);	
	controlElement.style.display = 'block';
	

	var innerWidth 	= jQuery(window).width();
	var innerHeight = jQuery(window).height();	

	var scrollTop 	= jQuery(window).scrollTop();
	var scrollLeft 	= jQuery(window).scrollLeft();	
	
	var selector = '#' + name;
	var outerWidth 	= jQuery(selector).outerWidth();
	var outerHeight = jQuery(selector).outerHeight();	
	
//	alert(scrollTop + ' ' + scrollLeft + ' ' + outerWidth + ' ' + outerHeight);
	

//	alert(key);
	var imageid 					= 'largeimageid_' + key;
	actualMovingImage 	= document.getElementById(imageid);


	var borderWidth = parseInt(elt.style.borderWidth.match(/[0-9]+/)[0]);
	

	var left 	= ((innerWidth - outerWidth) / 2) 		+ scrollLeft; 
	var top 	= ((innerHeight - outerHeight) / 2) 	+ scrollTop;



	var width = elt.offsetWidth - (2 * borderWidth);
	var height = elt.offsetHeight  - (2 * borderWidth);
	controlElement.style.display = 'none';

	return Array(parseInt(left),parseInt(top),width,height,actualMovingImage.width,actualMovingImage.height);	
	
}


// use to simulate a slow load for testing.
function loadLargeImageDelayed()
{
	
	var largeWaiting = document.getElementById('largeWaiting');
	largeWaiting.style.visibility = 'hidden';
	
	popupLargeImage(g_loadingImageKey);	

}
function loadLargeImage()
{
	
// use to simulate a slow load for testing.	
//	setTimeout('loadLargeImageDelayed()',5000);


	var largeWaiting = document.getElementById('largeWaiting');
	largeWaiting.style.visibility = 'hidden';
	
	popupLargeImage(g_loadingImageKey);
}
function popupLargeImage(key)
{

	if(g_imageKey)
	{
		var controlId = 'largecontrol_' + g_imageKey;
		controlElement = document.getElementById(controlId);
		controlElement.style.display='none';
		
		g_nextImage = key;
		setTimeout('compressStep()',g_imageStepDelay);
		return;
	}
	g_nextImage = false;	

	var imageid 					= 'largeimageid_' + key;
	actualMovingImage 	= document.getElementById(imageid);
//	alert(actualMovingImage.src);

	
	g_startPosition = getImageStart(key);
	g_endPosition = getImageEnd(key);



	if(actualMovingImage.src.match(/blank.gif/))
	{
//		alert('loading ' + key);
		var largeWaiting = document.getElementById('largeWaiting');

//		alert(g_startPosition[0]);

		largeWaiting.style.left 			= (parseInt(g_startPosition[0]) + (parseInt(g_startPosition[2]-32) / 2)) + 'px';		
		largeWaiting.style.top 				= (parseInt(g_startPosition[1]) + (parseInt(g_startPosition[3]-32) / 2)) + 'px';
		
//		alert(largeWaiting.style.left + ' ' + largeWaiting.style.top);		
//		largeWaiting.style.width 			= g_startPosition[2] + 'px';		
//		largeWaiting.style.height 		= g_startPosition[3] + 'px';
		largeWaiting.style.visibility = 'visible';
//		alert(largeWaiting.style.left + ' ' + largeWaiting.style.top + ' ' + largeWaiting.style.width + ' ' + largeWaiting.style.height);

		
		g_loadingImageKey = key;
	 	actualMovingImage.onload = loadLargeImage;
		actualMovingImage.src = g_largeImageNames[key];

		return;
	}



	
	
	// calculate a series of intermediate values;
	for(var i = 0; i < 6; i++)
	{
		g_increments[i] = (g_endPosition[i] - g_startPosition[i]) / g_imageStepCount;
	}


	var name = 'largeimage_' + key;
	var elt = document.getElementById(name);




	
//	elt.style.top 	= g_startPosition[1] + 'px';
//	elt.style.left 	= g_startPosition[0] + 'px';	
	
	elt.style.top 									= g_startPosition[1] + 'px';
	elt.style.left 									= g_startPosition[0] + 'px';		
	elt.style.width									= g_startPosition[2] + 'px';
	elt.style.height								= g_startPosition[3] + 'px';			
	actualMovingImage.style.width 	= g_startPosition[4] 	+	'px';
	actualMovingImage.style.height 	= g_startPosition[5]	+ 'px';	
//	alert(elt.style.top + ' ' + elt.style.left);
	
	elt.style.visibility = 'visible';	
	g_imageKey = key;
	g_imageStep = 0;
	setTimeout('expandStep()',g_imageStepDelay);
	
}
function expandStep()
{
	var name = 'largeimage_' + g_imageKey;
	var elt = document.getElementById(name);
	
	var imageid 					= 'largeimageid_' + g_imageKey;
	actualMovingImage 	= document.getElementById(imageid);
	
	
//	alert(elt.style.top);

	g_imageStep++;
	if(g_imageStep < g_imageStepCount)
	{
		elt.style.top 						= parseInt(g_startPosition[1] + g_increments[1] * g_imageStep) +'px';
		elt.style.left 						= parseInt(g_startPosition[0] + g_increments[0] * g_imageStep) +'px';
		elt.style.width						= parseInt(g_startPosition[2] + g_increments[2] * g_imageStep) +'px';
		elt.style.height					= parseInt(g_startPosition[3] + g_increments[3] * g_imageStep) +'px';
		actualMovingImage.style.width 	= parseInt(g_startPosition[4] + g_increments[4] * g_imageStep) +'px';
		actualMovingImage.style.height 	= parseInt(g_startPosition[5] + g_increments[5] * g_imageStep) +'px';		
		
		setTimeout('expandStep()',g_imageStepDelay);
	}
	else
	{
		elt.style.top 						= g_endPosition[1] 	+	'px';
		elt.style.left 						= g_endPosition[0] 	+	'px';
		elt.style.width						= g_endPosition[2] 	+	'px';
		elt.style.height					= g_endPosition[3] 	+	'px';
		actualMovingImage.style.width 	= g_endPosition[4] 	+	'px';
		actualMovingImage.style.height 	= g_endPosition[5]	+ 'px';
		
//		alert(g_endPosition);
		var controlId = 'largecontrol_' + g_imageKey;
		controlElement = document.getElementById(controlId);
		controlElement.style.display='block';
		
	}
}
function compressStep()
{
	var name = 'largeimage_' + g_imageKey;
	var elt = document.getElementById(name);
	
	var imageid 					= 'largeimageid_' + g_imageKey;
	actualMovingImage 	= document.getElementById(imageid);
	
	
//	alert(elt.style.top);

	g_imageStep--;
	if(g_imageStep > 0)
	{

		
		elt.style.top 						= parseInt(g_startPosition[1] + g_increments[1] * g_imageStep) +'px';
		elt.style.left 						= parseInt(g_startPosition[0] + g_increments[0] * g_imageStep) +'px';
		elt.style.width						= parseInt(g_startPosition[2] + g_increments[2] * g_imageStep) +'px';
		elt.style.height					= parseInt(g_startPosition[3] + g_increments[3] * g_imageStep) +'px';
		actualMovingImage.style.width 	= parseInt(g_startPosition[4] + g_increments[4] * g_imageStep) +'px';
		actualMovingImage.style.height 	= parseInt(g_startPosition[5] + g_increments[5] * g_imageStep) +'px';		
		
		setTimeout('compressStep()',g_imageStepDelay);
	}
	else
	{
		elt.style.visibility = 'hidden';

		elt.style.width						= g_endPosition[2] +	'px';
		elt.style.height					= g_endPosition[3] +	'px';
		actualMovingImage.style.width 	= g_endPosition[4] + 	'px';
		actualMovingImage.style.height 	= g_endPosition[5] + 	'px';		

		g_imageKey = false;
		
		if(g_nextImage)
		{
			popupLargeImage(g_nextImage)
		}
	}
}
function nextImage(key)
{

	// Stop the slideshow if they go to the next image
	clearTimeout(g_slideShowTimeout);		
	g_slideShowRunning = false;
		
	for(var i = 0; i < g_largeImageKeys.length; i++)
	{
		var largePlayName = 'largeplay_' + g_largeImageKeys[i];
		var largePlayElement = document.getElementById(largePlayName);
		largePlayElement.src = g_playIcon;
	}	
	
	for(var i = 0; i < g_largeImageKeys.length; i++)
	{
		if(g_largeImageKeys[i] == key)
		{
			if(i < g_largeImageKeys.length-1)
			{
				g_nextImage = g_largeImageKeys[i+1];
			}	
			else
			{
				g_nextImage = g_largeImageKeys[0];
			}

			var controlId = 'largecontrol_' + key;
			controlElement = document.getElementById(controlId);
			controlElement.style.display='none';
			
			
			setTimeout('compressStep()',g_imageStepDelay);
			break;
		}
	}
}
function previousImage(key)
{
	
	
	// Stop the slideshow if they go to the next image
	clearTimeout(g_slideShowTimeout);		
	g_slideShowRunning = false;
		
	for(var i = 0; i < g_largeImageKeys.length; i++)
	{
		var largePlayName = 'largeplay_' + g_largeImageKeys[i];
		var largePlayElement = document.getElementById(largePlayName);
		largePlayElement.src = g_playIcon;
	}	
	
	
	
	
	
	
	
	
	
	for(var i = 0; i < g_largeImageKeys.length; i++)
	{
		if(g_largeImageKeys[i] == key)
		{
			if(i > 0)
			{
				g_nextImage = g_largeImageKeys[i-1];
			}	
			else
			{
				g_nextImage = g_largeImageKeys[g_largeImageKeys.length-1];
			}
			var controlId = 'largecontrol_' + key;
			controlElement = document.getElementById(controlId);
			controlElement.style.display='none';
			
			setTimeout('compressStep()',g_imageStepDelay);
			break;
		}
	}
}
function setPopupImageLocation(evt)
{
  if (evt) {
    g_mouseX = evt.pageX;
    g_mouseY = evt.pageY;
  }
  else
  {
  	if(document.documentElement)
  	{
			var scrollTop 	= document.documentElement.scrollTop;
			var scrollLeft 	= document.documentElement.scrollLeft;
		}
		else
		{
			var scrollTop 	= document.body.scrollTop;
			var scrollLeft 	= document.body.scrollLeft;
		}
  	
    g_mouseX = event.clientX + scrollLeft;
    g_mouseY = event.clientY + scrollTop;   

  }

	if(g_currentImage)
	{
		var images = g_currentImage.getElementsByTagName('img');

	  var innerWidth 	= 0;
	  var innerHeight = 0;
	  
	  if( typeof( window.innerWidth ) == 'number' ) 
	  {
			//Non-IE
		  innerWidth 	= window.innerWidth;
		  innerHeight 	= window.innerHeight;
		} 
		else 
		{
			if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) 
			{
				//IE 6+ in 'standards compliant mode'
			 	innerWidth 	= document.documentElement.clientWidth;
			  innerHeight = document.documentElement.clientHeight;
			} 
			else 
			{
				if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) 
				{
			  	//IE 4 compatible
			 		innerWidth 	= document.body.clientWidth;
			   	innerHeight = document.body.clientHeight;
			 	}
			}
		}
		
		if(g_mouseX > (innerWidth - g_mouseX))
		{
			var left = g_mouseX - images[0].width - 25;
		}		
		else
		{
			var left = g_mouseX + 5;
		}
		
		if(g_mouseY > (innerHeight - g_mouseY))
		{
			var top = g_mouseY - images[0].height - 25;
		}		
		else
		{
			var top = g_mouseY + 5;
		}
		
		
		g_currentImage.style.top	= top + 'px';
		g_currentImage.style.left = left + 'px';
	}
}
var g_oldCursor;
function setCloseCursor()
{
	g_oldCursor = document.body.style.cursor;
	document.body.style.cursor = 'default';
}
function resetCloseCursor()
{
	document.body.style.cursor = g_oldCursor;
}
function printLargeImage(key)
{
	var name = 'largeimage_' + key;
	var elt = document.getElementById(name);

	var height 	= elt.offsetHeight;
	var width 	= elt.offsetWidth;	
//	alert('elt=' + elt +' width=' + width + ' height=' + height);

	
	window.open('helpers/print_image.php?k=' + key,'imageprinter','width=' + width + ',height=' + height);
	
	
}
function downloadImage(key)
{
	window.open('helpers/download_image.php?k=' + key,'imagedownloader');
}

var g_imageMoveStartLeft;
var g_imageMoveStartTop;
var g_imageMoveStartX = false;
var g_imageMoveStartY = false;
var g_movingImage = false;
var g_actualMovingImage = false;
var g_mousePositionX = 0;
var g_mousePositionY = 0;


if(document.addEventListener)
{
	document.addEventListener('mousemove',mouseImageMove,true);
	document.addEventListener('mouseup',endImageMove,true);
}
else
{
	document.attachEvent('onmousemove',mouseImageMove);
	document.attachEvent('onmouseup',endImageMove);	
}
//document.addEventListener('dragstart',moveImageDragStart,false);
document.ondragstart = function() { return false; }
function moveImageDragStart(evt)
{
	return false;
}
function mouseImageMove(evt)
{

 	if (evt) 
 	{
 		if(evt.clientX)
 		{
	    g_mousePositionX = evt.clientX;
  	  g_mousePositionY = evt.clientY;    
 		}
 		else
 		{
	    g_mousePositionX = evt.pageX;
  	  g_mousePositionY = evt.pageY;
  	}
  }
  else
  {
    g_mousePositionX = event.clientX;
    g_mousePositionY = event.clientY;    
  }	
	
//	window.status = evt + ' ' + g_mousePositionX + ' ' + g_mousePositionY;    
	
	if(g_movingImage)
	{
		g_disableHide = true;
		g_actualMovingImage.style.cursor = 'move';
			
		var newLeft = (g_imageMoveStartLeft + g_mousePositionX - g_imageMoveStartX);
		var newTop 	= (g_imageMoveStartTop + g_mousePositionY - g_imageMoveStartY);

		g_movingImage.style.left 	= newLeft + 'px';
		g_movingImage.style.top 	= newTop + 'px';
	}
	return false;	
}

function endImageMove(evt)
{
	if(g_movingImage)
	{
		g_endPosition[1] = g_movingImage.style.top.match(/[0-9]+/)[0];
		g_endPosition[0] = g_movingImage.style.left.match(/[0-9]+/)[0];
		
		for(var i = 0; i < 4; i++)
		{
			g_increments[i] = (g_endPosition[i] - g_startPosition[i]) / g_imageStepCount;
		}
	}
	g_movingImage = false;
 	return false;
}
function startImageMove(key)
{
	
//	alert('start');
	g_imageMoveStartX = g_mousePositionX;
	g_imageMoveStartY = g_mousePositionY;			
	
	var name = 'largeimage_' + key;
	var elt = document.getElementById(name);
	g_imageMoveStartLeft 	= parseInt(elt.style.left.match(/[0-9]+/)[0]);
	g_imageMoveStartTop 	= parseInt(elt.style.top.match(/[0-9]+/)[0]);
	g_movingImage 				= elt;
	var imageid 					= 'largeimageid_' + key;
	g_actualMovingImage 	= document.getElementById(imageid);
	

	return false;
	
}
function nextSlide()
{
	if(g_slideShowRunning == false)
	{
		return;
	}
	for(var i = 0; i < g_largeImageKeys.length; i++)
	{
		if(g_largeImageKeys[i] == g_imageKey)
		{
			if(i < g_largeImageKeys.length-1)
			{
				g_nextImage = g_largeImageKeys[i+1];
			}	
			else
			{
				g_nextImage = g_largeImageKeys[0];
			}

			var controlId = 'largecontrol_' + g_imageKey;
			controlElement = document.getElementById(controlId);
			controlElement.style.display='none';
			
			setTimeout('compressStep()',g_imageStepDelay);
			break;
		}
	}	
	g_slideShowTimeout = setTimeout('nextSlide()',g_slideshowDelay);
}
function slideshow(key)
{
	if(g_slideShowRunning)
	{
		clearTimeout(g_slideShowTimeout);		
		g_slideShowRunning = false;
		
		for(var i = 0; i < g_largeImageKeys.length; i++)
		{
			var largePlayName = 'largeplay_' + g_largeImageKeys[i];
			var largePlayElement = document.getElementById(largePlayName);
			largePlayElement.src = g_playIcon;
		}
	}
	else
	{
		for(var i = 0; i < g_largeImageKeys.length; i++)
		{
			var largePlayName = 'largeplay_' + g_largeImageKeys[i];
			var largePlayElement = document.getElementById(largePlayName);
			largePlayElement.src = g_pauseIcon;

		}		
		g_slideShowRunning = true;
		nextSlide();		
	}	
}








document.onmousemove = setPopupImageLocation;
