var myInnerWidth, myInnerHeight;
var myClientX, myClientY;
var myScrollX, myScrollY;
var myX, myY;

function MausTrack (Ereignis) {
	if (!Ereignis)
		Ereignis = window.event;
    
	myClientX = Ereignis.clientX;
	myClientY = Ereignis.clientY;

	if (self.innerHeight) {
		// all except Explorer
		myInnerWidth = self.innerWidth;
		myInnerHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) {
		// Explorer 6 Strict Mode
		myInnerWidth = document.documentElement.clientWidth;
		myInnerHeight = document.documentElement.clientHeight;
	} else if (document.body) {
		// other Explorers
		myInnerWidth = document.body.clientWidth;
		myInnerHeight = document.body.clientHeight;
	}

	if (self.pageYOffset) {
		// all except Explorer
		myScrollX = self.pageXOffset;
		myScrollY = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop) {
		// Explorer 6 Strict
		myScrollX = document.documentElement.scrollLeft;
		myScrollY = document.documentElement.scrollTop;
	} else if (document.body) {
		 // all other Explorers
		myScrollX = document.body.scrollLeft;
		myScrollY = document.body.scrollTop;
	}
	myX = myScrollX + myClientX; 
	myY = myScrollY + myClientY; 
}

//document.onmousemove = MausTrack;
function Tastendruck (Ereignis) {
  if (!Ereignis)
    Ereignis = window.event;
  if (Ereignis.which) {
    lastKeyCode = Ereignis.which;
  } else if (Ereignis.keyCode) {
    lastKeyCode = Ereignis.keyCode;
  }
  //window.status = "Taste mit Dezimalwert " + lastKeyCode + " gedrückt";
}
document.onkeydown = Tastendruck;

/*
  New Ajax Stuff for dynamic Edit
*/
var xmlHttp;
var noXMLHttp = false;
var calls=0;
function newXMLHttp() {
calls+=1;
try {
	// Firefox, Opera 8.0+, Safari
	xmlHttp = new XMLHttpRequest();
}
catch (e) {
	// Internet Explorer
	try {
		xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (e) {
		try {
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch (e) {
			noXMLHttp = true;
			// alert("Your browser does not support AJAX! "+e+': '+calls);
		}
	}
}
}
newXMLHttp();

function loadXMLDoc(url,procedure,method,query) 
{
	// pseudo stack requests ...
	newXMLHttp();
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) {
		xmlHttp.onreadystatechange=procedure;
		xmlHttp.open(method, url, true);
		if (method == 'GET')
			xmlHttp.send(null);
		else {
			xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			xmlHttp.setRequestHeader('Accept-Charset', 'UTF-8');
			xmlHttp.send(query);
		}
	}/* else if (xmlHttp.onreadystatechange != procedure)
		setTimeout("loadXMLDoc('"+url+"',"+procedure+",'"+method+"',"+query+")",500); */
}

function htmlify(str) {
	return str;
	if (!str) return '';
	str = str.replace(/&lt;/g,'<');
	str = str.replace(/&gt;/g,'>');
	str = str.replace(/&quot;/g,'"');
	str = str.replace(/&apos;/g,"'");
	str = str.replace(/&amp;/g,'&');
	return str;
}

var timeout;
var remember = new Array; // begriffe merken

function search (entity,search,link) {
	if (timeout)
		window.clearTimeout(timeout);
	s2(entity,search,link,600,200);
}
function s2 (entity,search,link,wait,retry) {
	wait-= retry;
	if (wait>0)
		timeout = window.setTimeout("s2('"+entity+"','"+search+"','"+link+"',"+wait+","+retry+")",retry);
	else
		search2(entity,search,link);
}

function search2 (entity,search,link) {
		if (search != remember[entity] && (search.length >= 2)) {
			remember[entity] = search;
			var obj = document.getElementById(entity+'_result');
			if (obj) {
				obj.innerHTML = 'Suche startet ...';
/*				obj.style.display = 'block';*/
/*				obj.style.position = 'relative';
				obj.style.visibility = 'visible';*/
				loadXMLDoc('dispatch.php?entity='+entity+'&action=search&search='+encodeURIComponent(search)+'&link='+encodeURIComponent(link),processSearch,'GET',false);
			}
		}
/*		else {
			var obj = document.getElementById(entity+'_result');
			if (obj) {
				obj.innerHTML = '';
				obj.style.visibility = 'hidden';
				obj.style.position = 'absolute';
			}
		}*/
}

function processSearch()
{
	// only if req shows "complete"
	if (xmlHttp.readyState == 4) {
		// only if "OK"
		if (xmlHttp.status == 200) {
			// JSON
			var response = eval("(" + xmlHttp.responseText + ")");
			document.getElementById( response.entity+'_result' ).innerHTML = '';
			if (response.content.length>0) {
				for(i=0;i < response.content.length; i++) {
					//document.getElementById( response.entity+'_result' ).innerHTML+= '<a href="" onClick="retrieve(\''+response.entity+'\','+response.content[i].id+'); return false;">'+htmlify(response.content[i].value)+'</a><br />';
					//document.getElementById( response.entity+'_result' ).innerHTML+= '<a href="">'+response.content[i].value+'</a><br />';
					document.getElementById( response.entity+'_result' ).innerHTML+= '<a href="'+response.content[i].link+'">'+response.content[i].value+'</a>';
				}
			} else 
				document.getElementById( response.entity+'_result' ).innerHTML = '<div style="margin-top: 0;" class="error">Keine Daten gefunden.</div>';
			
			
			// ...processing statements go here...
			// response  = req.responseXML.documentElement;

			// document.getElementById( 'resultFor'+response.getElementsByTagName('entity')[0].firstChild.data ).innerHTML = htmlify(response.getElementsByTagName('content')[0].firstChild.data);
			// the_object = eval("(" + http_request.responseText + ")");
		} else {
			alert("There was a problem with processSearch:\n" + xmlHttp.statusText);
		}
	}
}
