// Notiz
// =====

// Copyright (c) 2002 by Dietmar Rabich, Duelmen.
// Alle Rechte vorbehalten.

// http://www.rabich.de

// Version: 1.0
// Datum:   14.4.2002

/* --- Variablen --- */
var	mehrfach_anzeigen	= true	// true: Anzeige bei jedem Aufruf der Seite, false: einmalige Anzeige
var	pfad_close_img	= ""		// Pfad zur Bilddatei "notiz_schliessen.gif"
var	min_zIndex	= 1000		// minimaler z-Index fuer Notizen (groesser als groesste im Dokument)

/* Intern genutzte Variablen */
var	posx
var	posy
var	oldonmousemove
var	isDragDrop	= false
var	notizen	= new Array()
var	gebi	= ((typeof(document.getElementById) == "function") || (typeof(document.getElementById) == "object"))

/* Mit der Variablen gebi wird ermittelt, ob der Browser ueber DOM-Faehigkeiten verfuegt. Weitere Pruefungen
unterbleiben, auch wenn sie eigentlich erforderlich sind. Bisher hat kein Browser hat die JavaScript-Schnittstelle
wirklich vollstaendig implementiert. */

/* --- Hilfsfunktionen --- */

/* Cookie lesen */
function get_cookie(cookie_name)
{
	var	mein_cookie	= cookie_name + "="
	var	offset	= document.cookie.indexOf(mein_cookie)
	if(offset == -1)
		return ""

	offset	+= mein_cookie.length
	var	ende	= document.cookie.indexOf(";", offset)
	if(ende == -1)
		ende	= document.cookie.length
	return unescape(document.cookie.substring(offset, ende))
}

/* Cookie schreiben */
function set_cookie(cookie_name, cookie_wert, gueltigkeitszeitraum)
{
	var	ablauf_datum	= new Date()

	ablauf_datum.setTime(ablauf_datum.getTime() + gueltigkeitszeitraum * 1000)
	document.cookie	= cookie_name + "=" + escape(cookie_wert) + "; " + "expires=" + ((typeof(ablauf_datum.toUTCString) == "function") ? ablauf_datum.toUTCString() : ablauf_datum.toGMTString())
}

/* --- Bedienfunktionen --- */

/* Element id anzeigen */
function zeigen(id)
{
	document.getElementById(id).style.visibility	= "visible"
}

/* Element id verstecken */
function schliessen(id)
{
	document.getElementById(id).style.visibility	= "hidden"
}

/* Anzeige in Abhaengigkeit vom Cookie */
function anzeigen(id)
{
	var	cookie_name	= "NotizAngezeigt"
	if((get_cookie(cookie_name) == "") || mehrfach_anzeigen)
	{
		zeigen(id)
		set_cookie(cookie_name, "ja", 2678400)
	}
}

/* --- Mausbewegung --- */

/* Positionsveraenderung */
function dragdrop(e)
{
	// Verschieben aktiv?
	if(isDragDrop)
	{
		// Element ermitteln
		var	eIsObj	= (typeof(e) == "object")
		var	el	= eIsObj ? e.target : event.srcElement

		// Pruefen, ob Element die Klasse "notizen" hat; sonst Elternelemente
		while((typeof(el) == "object") && (el != null))
		{
			if(el.className == "notizen")
				break
			el	= el.parentNode
		}

		// Nicht fuendig geworden?
		if((el == null) || (typeof(el) != "object"))
			return

		// Element gefunden? Dann neue Position setzen
		if(el.className == "notizen")
		{
			el.style.left	= posx + (eIsObj ? e.clientX : event.clientX)
			el.style.top	= posy + (eIsObj ? e.clientY : event.clientY)
			return false
		}
	}
	return true
}

/* Bewegung starten */
function initdrag(e)
{
	// Element ermitteln
	var	eIsObj	= (typeof(e) == "object")
	var	el	= eIsObj ? e.target : event.srcElement

	// Pruefen, ob Element die Klasse "notizen" hat; sonst Elternelemente
	while((typeof(el) == "object") && (el != null))
	{
		if(el.className == "notizen")
			break
		el = el.parentNode
	}

	// Nicht fuendig geworden?
	if((el == null) || (typeof(el) != "object"))
		return

	// Element gefunden? Dann neue Position setzen
	if(el.className == "notizen")
	{
		// Alten z-Index merken und neuen setzen
		var	oldzIndex	= el.style.zIndex
		el.style.zIndex	= min_zIndex + notizen.length - 1

		// Notiz mit neuem z-Index suchen und alten setzen
		var tempEl
		var i
		for(i = 0; i < notizen.length; i++)
		{
			tempEl	= document.getElementById(notizen[i])
			if(tempEl.style.zIndex == el.style.zIndex && tempEl != el)
			{
				tempEl.style.zIndex	= oldzIndex
				break
			}
		}

		// Startposition ermitteln
		posx	= parseInt(el.style.left) - (eIsObj ? e.clientX : event.clientX)
		posy	= parseInt(el.style.top) - (eIsObj ? e.clientY : event.clientY)

		// Verschieben starten
		isDragDrop	= true
		oldonmousemove	= document.onmousemove
		document.onmousemove	= dragdrop
	}
}

/* --- Initialisierung --- */

/* Initialisierung fuer onLoad-Event */
function init()
{
	// Allen Notizen passende Indizes geben (letzte Notiz hoechster Index)
	var i
	for(i = 0; i < notizen.length; i++)
	{
		document.getElementById(notizen[i]).style.zIndex = min_zIndex + i
		anzeigen(notizen[i])
	}

	document.onmousedown	= initdrag
	document.onmouseup	= new Function("if(isDragDrop){isDragDrop = false; document.onmousemove = oldonmousemove}")
}

/* Notiz anlegen, HTML-Quelltext generieren */
function notiz_anlegen(id, left, right, html_quelltext)
{
	// Voraussetzungen nicht gegeben?
	if(!gebi)
		return

	// Notizidentifikation merken
	notizen[notizen.length]	= id

	// HTML-Quelltext ausgeben
	with(document)
	{
		open("text\/html")
		write("<div id=\"" + id + "\" style=\"left: " + left + "px; top: " + right + "px;\" class=\"notizen\" unselectable=\"on\"><div style=\"float: right;\"><a href=\"javascript:schliessen('" + id + "')\"><img src=\"" + pfad_close_img + "notiz_schliessen.gif\" width=\"13\" height=\"12\" border=\"0\" alt=\"&times;\" title=\"Schließen\"><\/a><\/div>" + html_quelltext + "<\/div>")
		close()
	}
}

/* Initialisierungsfunktion setzen */
var	oldonload	= window.onload
if(gebi)
	window.onload	= (typeof(oldonload) == "function") ? (new Function("oldonload(); init()")) : init

// EOF
