// COPYRIGHT by LOMBEGO SYSTEMS, Weimar 2005


windows = function()
{
	this.threshold = 50;
	this.minX = 10;
	this.minY = 10;
	this.maxX = 580;
	this.maxY = 5050;

	this.items = new Array()

	this.create = function (winName, xStart, yStart, wdth, hght, StrTitle, visible, oncloseFunction){
		this.items[winName] = Array();
		this.items[winName].winName = winName;
		this.items[winName].xStart = xStart;
		this.items[winName].yStart = yStart;
		this.items[winName].wdth = wdth;
		this.items[winName].hght = hght;
		this.items[winName].StrTitle = StrTitle;
		this.items[winName].visible = visible;

		this.items[winName].oncloseFunction = oncloseFunction;
	}
	this.draw = function(winName)
	{

		var newWin = document.createElement("div");
		this.items[winName].Div = document.getElementById("bdy").appendChild(newWin);
		//newDiv.innerHTML = "Test";
		this.items[winName].Div.className = "window_active";
		this.items[winName].Div.style.position = "absolute";
		this.items[winName].Div.style.zIndex = "9999";
		this.items[winName].Div.style.top = this.items[winName].yStart + "px";
		this.items[winName].Div.style.left = this.items[winName].xStart + "px";
		this.items[winName].Div.style.width = this.items[winName].wdth + "px";
		this.items[winName].Div.style.height = this.items[winName].hght + "px";
		this.items[winName].Div.id = this.items[winName].winName;
		if (this.items[winName].visible == 1)
		{
			this.items[winName].Div.style.display = "block";
		} else
		{
			this.items[winName].Div.style.display = "none";
		}
		// Titelleiste erstellen
		var newTitle = document.createElement("div");
		this.items[winName].Div.titleDiv = this.items[winName].Div.appendChild(newTitle);
		this.items[winName].Div.titleDiv.className = "title";
		this.items[winName].Div.titleDiv.innerHTML = this.items[winName].StrTitle;
		this.setactive(this.items[winName].Div);
		if (typeof addEventListener == 'function')
		{
			this.items[winName].Div.titleDiv.addEventListener("mousedown", dragstart, true);
			//this.items[winName].Div.titleDiv.addEventListener("mouseup", dragstop, true);
		} else
		{
			this.items[winName].Div.titleDiv.onmousedown=dragstart;
			//this.items[winName].Div.titleDiv.onmouseup=dragstop;
		}

		// Steuersymbole erstellen
		var IconClose = document.createElement("span");
		this.items[winName].Div.titleDiv.CloseIcon = this.items[winName].Div.titleDiv.appendChild(IconClose);
		this.items[winName].Div.titleDiv.CloseIcon.innerHTML = "X";
		this.items[winName].Div.titleDiv.CloseIcon.style.position = "absolute";
		this.items[winName].Div.titleDiv.CloseIcon.style.right = "3px";
		if (typeof addEventListener == 'function')
		{
			this.items[winName].Div.titleDiv.CloseIcon.addEventListener("click", this.killWindow, true);
		} else
		{
			this.items[winName].Div.titleDiv.CloseIcon.onclick=this.killWindow;
		}

		// Fensterbereich erstellen
		var newBody = document.createElement("div");
		this.items[winName].Div.bodyDiv = this.items[winName].Div.appendChild(newBody);
		this.items[winName].Div.bodyDiv.className = "body";
		this.items[winName].Div.bodyDiv.style.width= this.items[winName].wdth - 4 + "px";
		this.items[winName].Div.bodyDiv.style.height = this.items[winName].hght - 20 + "px";
		if (typeof addEventListener == 'function')
		{
			this.items[winName].Div.bodyDiv.addEventListener("mousedown", this.setactive, true);
		} else
		{
			this.items[winName].Div.bodyDiv.mousedown = this.setactive;
		}
	}

	this.killWindow = function(e)
	{

		if (e)
		{
			//alert(e.target.parentNode.parentNode.id);
			//alert(this.items[e.parentNode.parentNode.parentNode.id])
			eval(w.items[e.target.parentNode.parentNode.id].oncloseFunction);
			//w.items[w.getwinname(e.target.parentNode.parentNode.parentNode)] = null;
			e.target.parentNode.parentNode.parentNode.removeChild(e.target.parentNode.parentNode);

		} else
		{
			eval(this.oncloseFunction);
			//w.items[w.getwinname(event.srcElement.parentNode.parentNode.parentNode)] = null;
			event.srcElement.parentNode.parentNode.parentNode.removeChild(event.srcElement.parentNode.parentNode);
		}
		// ACHTUNG!!!
		//this.items = new Array();
	}

	this.setactive = function(e)
	{
		if (e)
		{
			if (e.target)
			{
				var obj = e.target
			} else
			{
				var obj = e;
			}
		} else
		{

			var obj = window.event.srcElement;
			alert (obj);
		}

		var j = 0;
		for (var i in this.items)
		{
			j ++;
			this.items[i].Div.style.zIndex = 9999 - j;
			if (this.items[i].Div == obj)
			{
				this.items[i].Div.className = "window_active";
				this.items[i].Div.style.zIndex = 9999;
			} else
			{
				this.items[i].Div.className = "window";
			}
		}
	}

	this.getwinname = function(obj)
	{
		for (var i in this.items)
		{
			if (this.items[i].Div == obj)
			{
				return i;
			}
		}
	}

	this.getcontent = function(winname)
	{
		return this.items[winname].Div.bodyDiv.innerHTML;
	}

	this.setcontent = function(winname, content)
	{
		this.items[winname].Div.bodyDiv.innerHTML = content;
	}

	this.settitle = function(winname, StrTitle)
	{
		this.items[winname].Div.titleDiv.innerHTML = StrTitle;
	}

	this.setvisible = function(winname)
	{
		this.items[winname].Div.style.display = "block";
	}

	this.setinvisible = function(winname)
	{
		this.items[winname].Div.style.display = "none";
	}
}

// Das Objekt, das gerade bewegt wird.
var dragobjekt = null;

// Position, an der das Objekt angeklickt wurde.
var dragx = 0;
var dragy = 0;

// Mausposition
var posx = 0;
var posy = 0;


function draginit() {
 // Initialisierung der Überwachung der Events

  document.onmousemove = drag;
  document.onmouseup = dragstop;
}


function dragstart(e) {
   //Wird aufgerufen, wenn ein Objekt bewegt werden soll.

  	if (typeof window.event != "undefined")
  	{
   		window.event.cancelBubble = true;
   		//alert(window.event.cancelBubble);
	}
   	if (typeof e != "undefined")
  	{
   		dragobjekt = e.target;
	} else
	{
		dragobjekt = event.srcElement;
	}
  w.setactive(dragobjekt.parentNode);
  //dragobjekt.style.cursor = "move";
  if (typeof dragobjekt.parentNode != 'undefined')
  {
	  dragx = posx - dragobjekt.parentNode.offsetLeft;
	  dragy = posy - dragobjekt.parentNode.offsetTop;
  }
  drag_active = 1;
}


function dragstop()
{
  // Wird aufgerufen, wenn ein Objekt nicht mehr bewegt werden soll.

  /*if (typeof window.event != "undefined")
  	{
   		window.event.cancelBubble = true;
   		//alert(window.event.cancelBubble);
	}

  	if (1 == 1)
	{
	  if (typeof dragobjekt == "object")
	  {
	  	if (typeof dragobjekt.length != "undefined")
	  	{
		  	if (dragobjekt.length != 0)
	  		{
		  		if (typeof dragobjekt.style != "undefined")
		  		{
		  			dragobjekt.style.cursor = "default";
				}
			}
		}*/
		clear_object();
		/*//alert(1);

	  }
	}
	drag_active = 0;*/
}

function clear_object()
{
	dragobjekt = null;
}

function drag(ereignis) {
  // Wird aufgerufen, wenn die Maus bewegt wird und bewegt bei Bedarf das Objekt.
	if (1 == 1)
	{
		  posx = document.all ? window.event.clientX : ereignis.pageX;
		  posy = document.all ? window.event.clientY : ereignis.pageY;
		  if (typeof dragobjekt != "undefined")
		  {
			  if (dragobjekt != null)
			  {
				  //if (dragobjekt.length != 0) {
				    if (typeof dragobjekt.parentNode != "undefined") {
					var winName = w.getwinname(dragobjekt.parentNode);
					//(Math.abs(w.items[winName].xStart - (posx - dragx)) > w.threshold) || (Math.abs(w.items[winName].yStart - (posy - dragy)) > w.threshold)
					if (((posy - dragy) < w.maxY) && ((posy - dragy) > w.minY) && ((posx - dragx) < w.maxX) && ((posx - dragx) > w.minX))
					{
						dragobjekt.parentNode.style.left = (posx - dragx) + "px";
					    dragobjekt.parentNode.style.top = (posy - dragy) + "px";
				    }
				  }
			  //}
		  } else
		  {
			  //alert(1);
		  }
		}
	}
}
//var dragobjekt;
drag_active = 0;
w = new windows();
draginit();