///////////////////////////////////////////////////////////////////////////////
// 
// Date: 1/8/2005
// Author: Keisuke Oyama (keisrtp@gmail.com) 
//

///////////////////////////////////////////////////////////////////////////////

var isIE = false;

function initScript(e) {
	if ( document.getElementById ) {
		var thumbnail = document.getElementById('thumb');
		addEvent(thumbnail, 'mousemove', onMouseMove, false);
	}
	
	if ( !window.opera && navigator.userAgent.indexOf('MSIE') != -1 ) {
		isIE = true;
	}
}


///////////////////////////////////////////////////////////////////////////////


function addEvent(element, eventType, fn, useCapture) {
	if (element.addEventListener) { // W3C DOM ?? - FireFox ...
		element.addEventListener(eventType, fn, useCapture);
		return true;
	}
	else if (element.attachEvent) { // Internet Explorer ??
		var r = element.attachEvent('on' + eventType, fn);
		return r;    
	}
	else {
		element['on'+eventType] = fn;
	}    
}


///////////////////////////////////////////////////////////////////////////////


function onMouseMove(ev) {
	var t = ev.target ? ev.target : ev.srcElement;
	var e = window.event ? window.event : ev;
	var x = 0, y = 0;
	var x0 = 0, y0 = 0;
	
	if ( typeof e.pageX != 'undefined' && typeof e.pageY != 'undefined' ) {
		x0 = e.pageX;
		y0 = e.pageY;
	}
	else if ( typeof e.clientX != 'undefined' && typeof e.clientY != 'undefined' ) {
		x0 = e.clientX;
		y0 = e.clientY;
		if ( isIE ) {
			x0 += document.documentElement.scrollLeft;
			y0 += document.documentElement.scrollTop;
		}
	}
	
	
	x = x0 - getPosX(t);
	y = y0 - getPosY(t);
	
	var ImgOx = (10 * x - 100) * (-1);
	var ImgOy = (10 * y - 100) * (-1);
	
	var elmViewer = document.getElementById('viewer');
	
	elmViewer.style.backgroundPosition = ImgOx + 'px ' + ImgOy + 'px';
	
}


///////////////////////////////////////////////////////////////////////////////


function getPosX (elm) {
	var posX = 0;
	if ( typeof elm.offsetParent != 'undefined' ) {
		do {
			posX += elm.offsetLeft;
		} while ( elm = elm.offsetParent );
	}
	else if ( typeof elm.x != 'undefined' ) {
		posX += elm.x;
	}
	return posX;
}


///////////////////////////////////////////////////////////////////////////////


function getPosY (elm) {
	var posY = 0;
	if ( typeof elm.offsetParent != 'undefined' ) {
		do {
			posY += elm.offsetTop;
		} while (elm = elm.offsetParent);
	}
	else if ( typeof obj.y != 'undefined' ) {
		posY += elm.y;
	}
	return posY;
}


///////////////////////////////////////////////////////////////////////////////


addEvent(window, 'load', initScript, false);
