﻿/* charset-encoding="UTF-8" */

/**
 * [30.11.2010] lo: Namespace-Deklaration für persis.require() ergänzt (persis.old_scripts.mouse_js). 
 */

/**
 * Namespace-Deklaration für persis.require()
 */
if(typeof persis != 'undefined') {
	persis.old_scripts = persis.old_scripts || {};
	persis.old_scripts.mouse_js = true;
}

/*
  Die aktuellen Mauskoordinaten.
  Wenn sie auf -1 stehen, hat vermutlich das initialisieren der Event-Handler
  nicht funktioniert.
*/
var mouseX = -1;
var mouseY = -1;
var cmouseX = -1;
var cmouseY = -1;

function Mode(doc)
{
    if(!doc) doc = window.document;
    return (doc.compatMode && doc.compatMode == "CSS1Compat") ?  // strict Modus
    'Strict' : 'Quirks';
}

function pageOffset(win)
{
    if(!win) win = window;
    var pos = {left:0,top:0};
    var m = Mode() == 'Strict';

    pos.left = typeof win.pageXOffset != 'undefined' ? win.pageXOffset : // Mozilla/Netscape
    m ?  // IE im strict Modus
    document.documentElement.scrollLeft : // Strict Modus
    win.document.body.scrollLeft // Quirks Modus
    ;

    pos.top = typeof win.pageYOffset != 'undefined' ? win.pageYOffset :
    m  ?
    document.documentElement.scrollTop :// Strict Modus
    win.document.body.scrollTop // Quirks Modus
    ;

    return pos;
}
 
/*
  Diese Funktion initialisiert die Mouse-Events im jeweiligen Browser.
  Normalerweise sollte diese Funktion automatisch aufgerufen werden, manchmal
  jedoch muss sie explizit in "onLoad" aufgenommen werden.
*/
function initMouseEvents() {
	document.onmousemove = onMouseMove;
	if(document.captureEvents)
		document.captureEvents(Event.MOUSEMOVE);
		
	 // Initialisierung der Überwachung der Events für Drag 'n' Drop	
	  //document.onmousemove = drag;
	  document.onmouseup = dragstop;
}


/*
  Diese Funktion nimmt den MouseMove-Event entgegen, der vom Browser ausgelöst wird,
  und trägt die entsprechenden Werte in die glovalen Variablen "mouseX", "mouseY" ein.
*/
function onMouseMove(e) {
	if(e) {
	  // Mozilla
		mouseX = e.screenX;
		mouseY = e.screenY;
		cmouseX = e.pageX;
		cmouseY = e.pageY;
	}
	else if(event.x) {
		// Internet Explorer
		mouseX = event.screenX;
		mouseY = event.screenY;
		
		s = pageOffset();
		cmouseX = event.x + s.left;
		cmouseY = event.y + s.top;
	}
	
	if(typeof positiontip != "undefined") {
		positiontip(e);
	}
	
	  //Wird aufgerufen, wenn die Maus bewegt wird und bewegt bei Bedarf das Objekt.
	
	  posx = document.all ? window.event.clientX : e.pageX;
	  posy = document.all ? window.event.clientY : e.pageY;
	  if(dragobjekt != null) {
	    dragobjekt.style.left = (posx - dragx) + "px";
	    dragobjekt.style.top = (posy - dragy) + "px";
	  }	
	
}

	// Drag 'n' Drop
	// ******************************
	
	// das aktuell ausgewählte Objekt, das verschoben wird
	var dragobjekt=null;
	
	function dragstart(element) {
	   //Wird aufgerufen, wenn ein Objekt bewegt werden soll.
	
	  dragobjekt = element;
	  dragx = posx - dragobjekt.offsetLeft;
	  dragy = posy - dragobjekt.offsetTop;
	}
	
	function dragstop() {
	  //Wird aufgerufen, wenn ein Objekt nicht mehr bewegt werden soll.
	
	  dragobjekt=null;
	}
	
			 
/*
  Registriere Mouse-Events.
*/
initMouseEvents();



