/*
		Copyright (c) 2005 tocco ag    
		tocco ag
		technology meets spirit
		www.tocco.ch
		044 240 58 11
*/
var currentDynTree = null;
var treeloaderReq = null;

function show_tree(obj,treeObj,toOne,searchid_,form_,reqA){
	currentDynTree = new TreeLoader(obj,treeObj,toOne,searchid_, form_, reqA);
}

function dummy_function(){/* do not delete this*/};

function TreeLoader(obj,treeObj,toOne_,searchid_,form_,reqA){
	this.old_resultlayer = null;
	this.RESULTLAYER = 'resultlayer';
	this.treeObj = treeObj;
	this.toOne = toOne_;
	this.obj = obj;
	this.isIE = false;
	this.isFireFox = false;
	this.isSafari = false;
	this.isMouseInLayer = false;
	this.searchid = searchid_;
	this.searchform = form_;

	if (this.treeObj.aNodes.length == 0) {
		if (window.XMLHttpRequest) {
			treeloaderReq=new XMLHttpRequest();
		} else if (window.ActiveXObject) {
			treeloaderReq=new ActiveXObject("Microsoft.XMLHTTP");
		}
		treeloaderReq.onreadystatechange= this.processReqChange;
		treeloaderReq.open("GET", reqA+"&r="+Math.random(), true);
		treeloaderReq.send(null);
	} else {
		this.createDiv("");
	}
}

TreeLoader.prototype.createDiv = function(txt){
	var tmp = document.createElement("div");
	if(txt != ""){
		eval(txt);
	}
	tmp.innerHTML = this.treeObj.toString();
	tmp.setAttribute("id",this.RESULTLAYER);
	this.addEvents(tmp);
	this.obj.parentNode.appendChild(tmp);
	if (this.isIE){
		this.removeSelect();
	}
	document.getElementById(this.RESULTLAYER).style.left = findPosX(this.obj.firstChild)+'px';
	document.getElementById(this.RESULTLAYER).style.top = findPosY(this.obj.firstChild)+20+'px';
}

TreeLoader.prototype.addEvents = function(obj) {
	if (navigator.userAgent.indexOf("Safari") > 0) {
		obj.addEventListener("mouseout",currentDynTree.mouseOut,false);
		obj.addEventListener("mouseover",currentDynTree.mouseOver,false);
		document.body.addEventListener('mouseup',currentDynTree.blurIt,false);
		window.addEventListener('keyup',currentDynTree.blurItOnKey,false);
		currentDynTree.isSafari=true;
	} else if (navigator.product == "Gecko") {
		obj.addEventListener('mouseout',currentDynTree.mouseOut,false);
		obj.addEventListener('mouseover',currentDynTree.mouseOver,false);
		document.body.addEventListener('mouseup',currentDynTree.blurIt,false);
		window.addEventListener('keyup',currentDynTree.blurItOnKey,false);
		currentDynTree.isFireFox=true;
	} else {
		obj.attachEvent('onmouseout',currentDynTree.mouseOut);
		obj.attachEvent('onmouseover',currentDynTree.mouseOver);
		document.body.attachEvent('onmouseup',currentDynTree.blurIt);
		document.body.attachEvent('onkeyup',currentDynTree.blurItOnKey);
		currentDynTree.isIE=true;
	}
}

TreeLoader.prototype.mouseOut = function(){
	currentDynTree.isMouseInLayer = false;
}

TreeLoader.prototype.mouseOver = function(){
	currentDynTree.isMouseInLayer = true;
}

TreeLoader.prototype.processReqChange = function() {
	if (treeloaderReq.readyState == 4) {
		if (treeloaderReq.status == 200) {
			currentDynTree.createDiv(treeloaderReq.responseText);
		}
	}
}

TreeLoader.prototype.blurItOnKey = function(event){
	if((event.keyCode == 9) || (event.which == 9)) currentDynTree.blurIt();
	else if((event.keyCode == 27) || (event.which == 27)) currentDynTree.blurIt();
}

TreeLoader.prototype.blurIt = function(){
	if(currentDynTree.isMouseInLayer){
	} else {
		if (document.getElementById(currentDynTree.RESULTLAYER)){
			document.getElementById(currentDynTree.RESULTLAYER).parentNode.removeChild(document.getElementById(currentDynTree.RESULTLAYER));
		}
		if(currentDynTree.isIE){
			currentDynTree.displaySelect();
		}
	}	
}

TreeLoader.prototype.select = function(id,obj){
	var searchtable = document.getElementById(currentDynTree.searchid+"T");
	if(currentDynTree.isSafari && searchtable.rows.length){
		if(searchtable.rows[0].getAttribute("id") == "safariDummy")	
			searchtable.deleteRow(0);
	}
	var npos = searchtable.rows.length;
	if (npos == 1) {
		if (document.forms[currentDynTree.searchform].elements[currentDynTree.searchid].value == id)
			npos = -1;
		else if (this.toOne) {
			searchtable.deleteRow(0);
			npos = 0;
		}
	} else if (npos > 1) {
		for (var i=0;npos>-1&&i<document.forms[currentDynTree.searchform].elements[currentDynTree.searchid].length;i++) {
			if (document.forms[currentDynTree.searchform].elements[currentDynTree.searchid][i].value == id) {
				npos = -1;
			}
		}
	}
	if (npos == -1) {
		alert('Diese Verknüpfung existiert bereits!');
	} else {
		var x = searchtable.insertRow(npos);
		x.id = currentDynTree.searchid+id;
		eval(currentDynTree.searchid+'W(x,obj,id)');
	}
	
	document.getElementById(currentDynTree.RESULTLAYER).parentNode.removeChild(document.getElementById(currentDynTree.RESULTLAYER));
	if(currentDynTree.isIE)
		currentDynTree.displaySelect();
}

TreeLoader.prototype.removeSelect = function (){
	var layerT=findPosY(document.getElementById(currentDynTree.RESULTLAYER),true);
	var layerH=document.getElementById(currentDynTree.RESULTLAYER).offsetHeight;
	var layerL=findPosX(document.getElementById(currentDynTree.RESULTLAYER),true);
	var layerW=document.getElementById(currentDynTree.RESULTLAYER).offsetWidth;
	for(var i=0;i<document.getElementsByTagName("select").length;i++){
		var selectT=findPosY(document.getElementsByTagName("select")[i]);
		var selectL=findPosX(document.getElementsByTagName("select")[i]);
		var selectH=document.getElementsByTagName("select")[i].offsetHeight+5;
		var selectW=document.getElementsByTagName("select")[i].offsetWidth+5;
		if((selectT < (layerT+layerH) && (selectT+selectH > layerT))
		&& (selectL < (layerL+layerW) && (selectL+selectW > layerL)))
			document.getElementsByTagName("select")[i].style.visibility="hidden";
		else{
			document.getElementsByTagName("select")[i].style.visibility="visible";}
	}
}

TreeLoader.prototype.displaySelect = function (){
	for(var i=0;i<document.getElementsByTagName("select").length;i++){
		document.getElementsByTagName("select")[i].style.visibility="visible";
	}
}
