// JavaScript Document
var aktEl   =  0;
var xPos    =  0;
var yPos    =  0;
var pastX   =  0;
var pastY   =  0;
var diffX   =  0;
var diffY   =  0;

// some known objects
var nc      =  !!(document.captureEvents    &&  !document.getElementById);
var nc6     =  !!(document.captureEvents    &&  document.documentElement);
var opera   =  !!(document.getElementById   &&  !document.documentElement);
var ie      =  !!document.all;
var ie4     =  !!(document.all              &&  !document.documentElement);
var ie5     =  !!(document.all              &&  document.documentElement);
var dom     =  !!document.getElementById;
var mac     =  !!(navigator.userAgent.indexOf("Mac")!=-1);

// einfache div-layer referenzieren
function dRef(num)	{return (nc? document.layers[num] : (ie4? document.all[num]       : document.getElementById(num)))}
function dRefS(num)	{return (nc? document.layers[num] : (ie4? document.all[num].style : document.getElementById(num).style))}

// register events within document and divs
function init() {
	if (nc) {
		document.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP); 
		dRef("photo").captureEvents(Event.MOUSEDOWN); 
	} 
	document.onmousemove     =  docMove;
	document.onmouseup       =  docUp;
	dRef("photo").onmousedown =  divDown;
}

// mousemove in document
function docMove(e) {	
	pastX =  xPos;
	pastY =  yPos;
    xPos  =  document.captureEvents? e.pageX : window.event.x;
    yPos  =  document.captureEvents? e.pageY : window.event.y;
    document.dpl.out.value = "X = " + xPos + ", Y = " + yPos;
    
    if (aktEl) {
    	diffX =  (pastX != xPos)? pastX - xPos :  0;
    	diffY =  (pastY != yPos)? pastY - yPos :  0;
    	
    	if (diffX) dRefS(aktEl).left =  (findAktX(aktEl) - diffX) +  ((dom && !opera)? "px" : 0);
    	if (diffY) dRefS(aktEl).top  =  (findAktY(aktEl) - diffY) +  ((dom && !opera)? "px" : 0);
    	document.dpl.out3.value      =  "X = " + (findAktX(aktEl) - diffX) + ", Y = " + (findAktY(aktEl) - diffY);
    }
	if (nc) routeEvent(e);
	return false;
}

// mousedown over div
function divDown(e) {	
	aktEl =  this.id;
	document.dpl.out2.value =  aktEl;
	if (nc) routeEvent(e);
	return false;
}

// mouseUp over document
function docUp(e) {
	aktEl =  0;
	document.dpl.out2.value =  "";
	if (nc) routeEvent(e);
}

function findAktX(id) {return (nc? dRefS(id).x : ((mac && ie)? dRefS(id).pixelLeft : dRef(id).offsetLeft));}
function findAktY(id) {return (nc? dRefS(id).y : ((mac && ie)? dRefS(id).pixelTop  : dRef(id).offsetTop));}

