// JavaScript Document


/*****************************/
// Script zur Layersteuerung //
/*****************************/

// Layer mit Verzögerung anzeigen: 
//		pruefen ( idname, xpo, ypo, breite, hoehe, verzoegerung );

// Layer mit Verzögerung verstecken:
// 		layeraus(layerid, verzoegerung);

// Layer ohne Verzögerung zeigen:
// 		zeigen(layerid, xposition, yposition, breite, hoehe);

// Layer ohne Verzögerung verstecken:
// 		verstecken(layerid);

// Schrift- und Hintergrundfarbe setzen: 
// 		farbe(layerid, schriftfarbe, hintergrundfarbe);

// xposition und yposition: Position der Maus

/*******************************/
/* Variablen und Definitionen **/
/*******************************/

var ns4, ie4, ns6, posx, posy, xpos, ypos, px, py, breite, hoehe, mouseX, mouseY;
var alter = "";
var zeit, an, aus, aktuellx, aktuelly, kleben, ve;

ie4 = document.all;
ns6 = document.getElementById && !document.all;


/**************/
/* FUNKTIONEN */
/**************/

/*function init()
	In dieser Funktion werden die Aktionen für die Mausbewegung und den Doppelklick auf ihre Ausgangswerte gesetzt. Sie
	muss zum Beginn einmal aufgerufen werden, z.B. durch eine onLoad="init();" - Anweisung im einleitenden body -Tag.
	Ist das Drag&Drop der Layer nicht gewünscht, so muss die document.ondblclick = startbewegen; Zeile gelöscht werden,
	außerdem können die beiden Funktionen startbewegen(e) und bewegen(e) weg gelassen werden. */
function init() {
	document.ondblclick = startbewegen;
	document.onmousemove = koordinaten;
}


/* function pruefen(idname,xpo,ypo,breite,hoehe,verzoegerung):
	Mit dieser Funktion wird der Layer mit dem Namen idname an der Position x= xpos, y= ypos angezeigt. Er bekommt die
	Breit breite und die Höhe hoehe. Durch Angabe eines Wertes für verzoegerung wird ein Verzögerungswert für das
	Erscheinen in 1/1000 Sekunden angegeben. Ein anderer Layer, der durch diese Funktion geöffnet wurde, wird vorher wieder
	geschlossen, z.B. wichtig für Untermenüs. */

function pruefen ( idname, xpo, ypo, breite, hoehe, verzoegerung ) {
	ve = verzoegerung;
	px = xpo;
	py = ypo;
	xb = breite;
	yb = hoehe;
	an = idname;

	clearTimeout ( zeit );
	if ( alter && alter != an ) {
		verstecken ( alter );
		zeit = setTimeout ( "zeigen(an,px,py,xb,yb)", ve );
	} 
	else
		zeit = setTimeout ( "zeigen(an,px,py,xb,yb)",ve );
		alter = idname;
	}
	
	
/* function layeraus(idname,verzoegerung)
	Der Layer mit dem Namen idname wird mit der angegebenen Verzögerung verzoegerung geschlossen. */	
function layeraus ( idname, verzoegerung ) {
	ve = verzoegerung;
	aus = idname;
	zeit = setTimeout ( "verstecken(aus)", ve );
	alter = idname;
}


/* function zeigen(idname,xpo,ypo,breite,hoehe)
	Wie Funktion pruefen, nur ohne Verzögerung. Enthält den eigentlichen Code zum Anzeigen des Layers und wird von der
	Funktion pruefen aufgerufen. */

function zeigen ( idname, xpo, ypo, breite, hoehe ) {
	if ( ns6 ) {
		if ( document. getElementById ( idname )) {
			
			/*meinDiv = document.getElementById(idname);
			meinDiv_breite = xpo + parseInt(meinDiv.style.width);
			meinDiv_hoehe = ypo + parseInt(meinDiv.style.height);
			
			xpo = xpo - meinDiv_breite;
			ypo = xpo - meinDiv_hoehe; */
			
			document.getElementById(idname).style.left = xpo;
			document.getElementById(idname).style.top = ypo;
			
			if ( breite > 0 ) 
				document. getElementById ( idname ). style. width = breite;
			if ( hoehe > 0 ) 
				document. getElementById ( idname ). style. height = hoehe;
				
			document. getElementById ( idname ). style. visibility = "visible";
		}
	}
	
	if ( ie4 ) {
		if ( document. all [ idname ]) {
			document. all [ idname ]. style. left = xpo;
			document. all [ idname ]. style. top = ypo;

			if ( breite > 0 ) 
				document. all [ idname ]. style. width = breite;
			if ( hoehe > 0 ) 
				document. all [ idname ]. style. height = hoehe;

			document. all [ idname ]. style. visibility = "visible";
		}
	}
}


/* function verstecken(idname)
	Wie Funktion layeraus, nur ohne Verzögerung. Enthält den eigentlichen Code zum Ausschalten des Layers und wird von der
	Funktion layeraus aufgerufen. */

function verstecken ( idname ) {
	if ( ie4 ) 
		document. all[ idname ].style.visibility = "hidden";
	if ( ns6 ) 
		document. getElementById ( idname ). style. visibility = "hidden";
	alter = "";
}


/* function farbe(idname,farb,bgcol)
	Mit dieser Funktion bekommt der Layer mit dem Namen idname die Schriftfarbe farb und die Hintergrundfarbe bgcol */

function farbe ( idname,farb,bgcol ) {
	if ( ie4 )
		if ( document. all [ idname ]) {
			document. all [ idname ]. style. color = farb;
			document. all [ idname ]. style. background = bgcol;
		}
	if ( ns6 )
		if ( document. getElementById ( idname )) {
			document. getElementById ( idname ). style. color = farb;
			document. getElementById ( idname ). style. background = bgcol;
		}
}

/* function koordinaten(e)
	Ermittelt die X/Y-Koordinaten der Maus. Die Variablen xpos und ypos können z.B. beim Aufruf der Funktion zeigen
	übergeben werden um einen Layer zu erzeugen der der Maus folgt. */

function koordinaten ( e ) {
	xpos = ( document.getElementById && ! document. all ) ? e.clientX : document.body.scrollLeft + event.clientX;
	ypos = ( document.getElementById && ! document. all ) ? e.clientY : document.body.scrollTop + event.clientY;

}

/* function startbewegen(e)
	Wird ein Doppelklick mit der Maus auf einen Layer gemacht, so haftet (drag) der Layer an der Maus und kann verschoben
	werden. Ein weiterer Doppelklick setzt den Layer an der Mausposition ab (drop). Diese Funktion ermittelt den angeklickten
	Layernamen und seine aktuelle Position, danach werden die Aktionen für die Mausbewegung und den Doppelklick geändert. */
function startbewegen ( e ) {
	idname = ie4? event.srcElement.id : e.target.id;
	if ( idname != "" ) {
		posx = ie4? event. clientX : e. clientX;
		posy = ie4? event. clientY : e. clientY;

		aktuellx = ns6? parseInt ( document. getElementById ( idname ). style. left ) :
								parseInt ( document. all [ idname ]. style. left );
		aktuelly = ns6? parseInt ( document. getElementById ( idname ). style. top ) :
								parseInt ( document. all [ idname ]. style. top );
		kleben = true;
		document.onmousemove = bewegen;
		document.ondblclick = new Function ( "kleben=false" );
	}
}


/* function bewegen(e)
	Wird von der Funktion startbewegen(e) aufgerufen und ist für das eigentliche Bewegen zuständig. Wenn der Layer wieder
	abgesetzt wurde (drop) wird die Funktion init aufgerufen. */ 
function bewegen ( e ) {
	koordinaten ( e );
	
	if ( kleben ) {
		if ( ie4 ){
			document. all [ idname ]. style. left = aktuellx + event. clientX - posx;
			document. all [ idname ]. style. top = aktuelly + event. clientY - posy;
		}
		if ( ns6 ){
			document. getElementById ( idname ). style. left = Number ( aktuellx + e. clientX - posx );
			document. getElementById ( idname ). style. top = Number ( aktuelly + e. clientY - posy );
		}
	}
	
	else 
		init ();
	
	return true;
}







