/**
*  @author: D S
*
*
*/
	var zoomLevel = 1.00;
	var MAX_ZOOM = 3.10;
	var MIN_ZOOM = 1.00;
	var ZOOM_DELAY = 25;
	var ZOOM_REDUCTION = 0;
	
	var l_width = 386;
	var l_height = 386;
	
	var zoomWidth = 386;
	var zoomHeight = 386;

	var xOffset = 0;
	var yOffset = 0;
	var useColorImages = true;
	var zoomed = false;
	var zooming = ""; 
	var oldOnZoomImage = true; //initially, the pointer is over the zoom container...has to be
	
	var mouseDown = false;
	
	var pos = new Object();
	pos.x = 0;
	pos.y = 0;
	

	function zoomIn(){
		
		zoomLevel += .1;
		
		if (zoomLevel > MAX_ZOOM)
		{
			zoomLevel = MAX_ZOOM;
			zoomed = true;
			zooming = "";
			placeImage();
			
			// calculate new left / top
			var newLeft=  ((zoomLevel * l_width) - l_width) / 2;
			var newTop =  ((zoomLevel * l_height) - l_height) / 2;
			pos.x = newLeft;
			pos.y = newTop;
			document.getElementById('productDescImg').style.left = (newLeft * -1) + 'px'; 
			document.getElementById('productDescImg').style.top = (newTop * -1) + 'px';

			//MOVED IN HERE TO ONLY SWAP ON LAST ITERATION
	
			if (useColorImages) {

			setColorImage(selectedColor);
			} else {

				setImage('ImagePRODUCT_ZOOM');
			}

			return;
			
		}
		placeImage();
		
		// calculate new left / top
		var newLeft=  ((zoomLevel * l_width) - l_width) / 2;
		var newTop =  ((zoomLevel * l_height) - l_height) / 2;
		pos.x = newLeft;
		pos.y = newTop;
		document.getElementById('productDescImg').style.left = (newLeft * -1) + 'px';
		document.getElementById('productDescImg').style.top = (newTop * -1) + 'px';
		
		//if (useColorImages) {
		//	setColorImage(selectedColor);
		//} else {
		//	setImage('ImagePRODUCT_ZOOM');
		//}
		
		setTimeout("zoomIn()",ZOOM_DELAY);
	
	}
	
	function zoomOut(x, y){
		zoomLevel -= .1;
		
		if (zoomLevel < MIN_ZOOM)
		{
			zoomLevel = MIN_ZOOM;
			
			placeImage();
			document.getElementById('productDescImg').style.left  = 0;
			document.getElementById('productDescImg').style.top = 0;
			document.getElementById('productDescImg').style.width = zoomLevel * l_width;
			document.getElementById('productDescImg').style.height = zoomLevel * l_height;
			zoomed = false;
			zooming = "";
			
			//if (useColorImages) {
			//	setColorImage(selectedColor);
			//} else {
			//	setImage('ImagePRODUCT_MAIN');
			//}
			
			return;
		}

		//MOVED HERE SO THAT WE WOULD BE RESIZING THE LO-REZ IMG EACH TIME INSTEAD OF THE HI-REZ
		if (useColorImages) {
			setColorImage(selectedColor);
		} else {
			setImage('ImagePRODUCT_MAIN');
		}

		placeImage();
		
		var percent = ( (zoomLevel - MIN_ZOOM) *  ZOOM_REDUCTION ) ;
		
		// calculate new left and top
	
		document.getElementById('productDescImg').style.left  = Math.round(x / 100 * (percent)) + 'px';
		document.getElementById('productDescImg').style.top = Math.round(y / 100 * (percent)) + 'px';

		setTimeout("zoomOut(" + x * 1.0 + "," + y * 1.0 + ")", ZOOM_DELAY);
	}
	
	function placeImage(){
		
		document.getElementById('productDescImg').style.width = Math.round(zoomLevel * l_width) + 'px';
		document.getElementById('productDescImg').style.height = Math.round(zoomLevel * l_height) + 'px';
		
	}
	
	function toggleZoom() {
		
		if (zooming != '') return;
	
		
		
		if (zoomed){
			zooming = "out";
			
			var left = document.getElementById('productDescImg').style.left.replace('px','') ;
			var top = document.getElementById('productDescImg').style.top.replace('px','')  ;

			if ((MAX_ZOOM - MIN_ZOOM) > 0) {ZOOM_REDUCTION = 100/(MAX_ZOOM - MIN_ZOOM)};

			zoomOut(left, top);
			
			
		} else {
		
			zooming = "in";
			
			
			zoomIn();
		}
		
		
	}
	
	function move(e){
		if (! mouseDown || ! zoomed || zooming) {
			return;
		} 
		
		var newPos = getMousePos(e);
		
		var oldLeft = document.getElementById('productDescImg').offsetLeft;
		var oldTop = document.getElementById('productDescImg').offsetTop;
		
		var newLeft = (oldLeft * 1) + ( newPos.x - pos.x ) + xOffset;
		var newTop = (oldTop * 1) + ( newPos.y - pos.y ) + yOffset;
		
		var actualWidth = (zoomLevel * l_width);
		var actualHeight = (zoomLevel * l_height);

		//debug
		//window.status = 'old/new Left=[' + oldLeft + '][' + newLeft + '] old/new Top=[' + oldTop + '][' + newTop + '] actualWidth=[' + actualWidth + '] actualHeight=[' + actualHeight + ']' ;

		//ie bug adjustment, only perform if the pointer has moved more then 10 px (jumped) and
		//we are mousing on or off the zoom container
		if (Math.abs(oldTop - newTop) > 10 && (onZoomImage != oldOnZoomImage) )
		{
			oldOnZoomImage = onZoomImage;
			if ( Math.abs(newTop) > Math.abs(oldTop) ) {newTop = oldTop - 1;}
			else {newTop = oldTop + 1;}
		}

		if (newLeft <= 0 && ( (newLeft + actualWidth) > (l_width)) ){
			document.getElementById('productDescImg').style.left = newLeft + 'px';
		}
		
		if (newTop <= 0 && ( (newTop + actualHeight) > (l_height)) ) {
			document.getElementById('productDescImg').style.top  = newTop + 'px';
		}
		
		pos = getMousePos(e);

	}
	
	function down(e){
		// get mouse position when clicked;
		pos = getMousePos(e);

		mouseDown = true;
	}
	
	function up(e){
		
		mouseDown = false;
	}
	
	function getMousePos(e){
	
		if (!e) var e = window.event;
		var pos = Object();
		
		if (e.pageX && e.pageY) {
			pos.x = e.pageX; 
			pos.y = e.pageY;
		}

		else if (e.clientX && e.clientY) {
			pos.x = e.clientX;
			pos.y = e.clientY;
		}
		
		return pos;
	}
	
	function log(t){
	
		document.getElementById('log').innerHTML += t;
	}