
function getCoords(x,y,w,h) {
	var width = w || 1024;
	var height = h || 1024;
	x = ((x * width) / 200) - (width < 1024 && height < 1024 ? 230 : 180);  
	y = ((y * height) / 200) - (width < 1024 && height < 1024 ? 230 : 180); 
	return [x,y];
}

Event.observe(window,'load',function(){

	document.enablelens = false;

	// lens
	$('Product').insert({'bottom': '<div id="lens" style="display: none;"></div>'});
	var lens = $('lens');
	var port = $('port');
	var miniport = $('productImage');
	var buffer = new Image();
	
	// one time settings
	buffer.src = miniport.src.replace(/200\/([0-7])\/$/,'1024/$1/');
	miniport.makePositioned();
	lens.makePositioned();
	miniport.title = '';
	
	// position for the mini port
	var minipos = Position.cumulativeOffset(miniport);
	
	// en/disable the lens when mousing over the miniport
	var viewLens = function(e) {
		var pointer = [Event.pointerX(e), Event.pointerY(e)];	
		var inside = Position.within(miniport, pointer[0], pointer[1]);

		if (inside ) {
			lens.setStyle({'top': pointer[1]-25+'px', 'left': pointer[0]-25+'px', 'display' : '' });
			// update the lens
			if (document.enablelens) {
				var coords = getCoords(pointer[0] - minipos[0], pointer[1] - minipos[1], buffer.width, buffer.height);
				$('port').style.display = '';
				$('port').style.backgroundColor = '#fff';
				$('port').style.backgroundRepeat = 'no-repeat';
				$('port').style.backgroundPosition = -coords[0] + 'px ' + -coords[1] + 'px';
			}

		} else {
			lens.hide();
			port.hide();
			lens.setStyle({'cursor': 'pointer'});
			document.enablelens = false;
		}
	}
	document.observe('mousemove', viewLens);

	lens.onclick = function(e) {

		if ($('port').visible()) {
			return;
		}

		e = e || window.event;
		
		var pointer = [Event.pointerX(e), Event.pointerY(e)];
		var coords = getCoords(pointer[0] - minipos[0], pointer[1] - minipos[1]);
		var newsrc = miniport.src.replace(/200\/([0-7])\/$/,'1024/$1/') + '';
		
		$('port').makePositioned();
		$('port').style.backgroundColor = '#fff';
		$('port').style.backgroundImage = 'url(/i/28-0.gif)';
		$('port').style.backgroundRepeat = 'no-repeat';
		$('port').style.backgroundPosition = '50% 150px';
		
		new Effect.BlindDown($('port'),{afterFinish: function(){

			setTimeout(function(){
				buffer.src = newsrc + '?100'; // + (new Date()).getSeconds().toString();
				buffer.onload = function() {
					if (buffer.width < 1024 && buffer.height < 1024) {
						coords = getCoords(pointer[0] - minipos[0], pointer[1] - minipos[1], buffer.width, buffer.height);
					}
					$('port').style.backgroundImage = 'url('+newsrc+')';
					$('port').style.backgroundRepeat = 'no-repeat';
					$('port').style.backgroundPosition = -coords[0] + 'px ' + -coords[1] + 'px';
					document.enablelens = true;
				}
			}, 500);
		}});
	};
	
	lens.setStyle({'opacity': 0.5});

	lens.observe('click', function(e) {
		lens.setStyle({'cursor': 'move'});
	});
	
	if (/MSIE/.test(navigator.userAgent) && !window.opera) $('port').setStyle({'marginLeft': 0});
});
