addEvent(window, 'load', secureDelLinks, false);
var noaction = Array();

var queue = new Queue();
var canRequest = true;
var xmlHttp = false;
var querycache = Array();


if (typeof(XMLHttpRequest) != 'undefined')
{
	xmlHttp = new XMLHttpRequest();
}
if (!xmlHttp)
{
	try
	{
		xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(e)
	{
		try
		{
			xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(e)
		{
			xmlHttp  = false;
		}
	}
}


function getEl(id)
{
	return document.getElementById(id);
}


function xmlCall(query, callback)
{
	// document.getElementById("loading").style.display = "block";

	//var queryhash = b64_sha1(query);
  //var cacheresponse = querycache.eval(queryhash);
	/*if (cacheresponse)
	{
    // alert(queryhash + " : " + querycache.eval(queryhash).responseText);
	  canRequest = true;
	  doPostbacks();
	  xmlHttp = cacheresponse;
	  eval(callback);
  } else
	{*/
  	var baseUrl = "";
  	if (xmlHttp)
  	{
  		try {

  			xmlHttp.open('GET', baseUrl+query, true);
  			xmlHttp.onreadystatechange = function ()
  			{
  				if (xmlHttp.readyState == 4) {
  				  // querycache[queryhash] = xmlHttp;
  				  // alert(queryhash + " : " + xmlHttp.responseText);
  				  canRequest = true;
  				  doPostbacks();
  					eval(callback);
  					// document.getElementById("loading").style.display = "none";
  				}
  			};
  			xmlHttp.send(null);
  		}
  		catch (ex)
  		{

  		}
  	}

}


function ascendDOM(ev, target)
{
	while (ev.nodeName.toLowerCase() != target && ev.nodeName.toLowerCase() != 'html')
	{
		ev = ev.parentNode;
	}
	return (ev.nodeName.toLowerCase() == 'html') ? null : ev;
}

function ascendDOMClassName(ev, target)
{
	while (ev.className != target && ev.nodeName.toLowerCase() != 'html')
	{
		ev = ev.parentNode;
	}
	return (ev.nodeName.toLowerCase() == 'html') ? null : ev;
}



function addEvent(elm, evType, fn, useCapture)
// cross-browser event handling for IE5+, NS6+ and Mozilla/Gecko
// By Scott Andrew
{
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
		} else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn);
		return r;
		} else {
		elm['on' + evType] = fn;
	}
}


function onAnchorClick(ev)
{
	var el;
	if (window.event && window.event.srcElement) {el = window.event.srcElement;}
	if (ev && ev.target) {el=ev.target;}
	if (!el) {return;}

	if (ev && ev.preventDefault && ev.stopPropagation )
	{
		ev.preventDefault();
		ev.stopPropagation();
	}

	el = ascendDOM(el, 'a');
	if (el.nodeName.toLowerCase() == 'a')
	{
		pos = el.href.indexOf("?");
		valstart = el.href.indexOf("=");
		end = el.href.indexOf("#");
		options = el.href.slice(pos,el.href.length);
		options = options.slice(0, end);
		var idvalue = options.slice(valstart, end);
		alert(idvalue);
		if (options=="") return;
		//el.parentNode.innerHTML = '<p class="replace">Lade...</p>';
		//el.firstChild.nodeValue = "Lade...";
		el.href = "";
		//loading(true);
		xmlCall( "server/showserv.php" + options , "showContent()");
	} else {return;}

	if (window.event)
	{
		window.event.cancelBubble = true;
		window.event.returnValue = false;
	}
}

function showContent()
{
	var stats = document.getElementById("currentShow");
	stats.innerHTML = xmlHttp.responseText;
	setHandlers();
}


function secureDelLinks()
{
	var l = document.getElementsByTagName('a');
	for (var i = 0; i<l.length; i++)
	{
		if (l[i].className.indexOf("confirm") > -1)
			addEvent(l[i],'click',checkDelete, false);
	}
}

function checkDelete(ev)
{
  var el = getElFromEv(ev);
  var str = (el.title != "") ? el.title + " - sind Sie sicher?" : "Sind Sie sicher?";
	var confirmed = confirm(str);
	if (!confirmed)
	{
  	if (window.event) {
  		window.event.cancelBubble = true;
  		window.event.returnValue = false;
    }
  	if (ev && ev.stopPropagation && ev.preventDefault) {
  		ev.stopPropagation();
  		ev.preventDefault();
  	}
	}
}




function debug(s)
{
	document.getElementById("debug").innerHTML = s;
}

function getElFromEv(ev)
{
	var el;
	if (window.event && window.event.srcElement) {el = window.event.srcElement;}
	if (ev && ev.target) {el=ev.target;}
	return el;
}

function getMouse(ev)
{
	var posx = 0;
	var posy = 0;
	if (!ev) var ev = window.event;
	if (ev.pageX || ev.pageY)
	{
		posx = ev.pageX;
		posy = ev.pageY;
	}	else if (ev.clientX || ev.clientY)
	{
		posx = ev.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
		posy = ev.clientY + document.body.scrollTop + document.documentElement.scrollTop;
	}
	return [posx, posy];
}

function findPos(obj) { // von PPK
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
		  //if (obj.id == "all") continue;
//		  alert(Array(obj.tagName, obj.offsetLeft, obj.offsetTop))
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

function doPostbacks()
{
	if (canRequest)
	{
		if (queue.queuelength()<1) return;
		var params = queue.dequeue();
		if (params==undefined) return;
		canRequest = false;
		xmlCall(params[0], params[1]);
	}
}


function Queue(){
	// original von: http://www.safalra.com/programming/javascript/queues/
	// modifiziert von Sascha Bätz
  var queue=new Array();
  var queueSpace=0;
  this.enqueue=function(element){
    queue.push(element);
  }
  this.dequeue=function(){
    if (queue.length){
      var element=queue[queueSpace];
      if (++queueSpace*2 >= queue.length){
        for (var i=queueSpace;i<queue.length;i++) queue[i-queueSpace]=queue[i];
        queue.length-=queueSpace;
        queueSpace=0;
      }
      return element;
    }else{
      return undefined;
    }
  }
  this.queuelength=function(){
  	return queue.length;
  }
}

function neuesFenster(meineSeite,meinName,w,h,scroll)
{
  LeftPosition = (screen.width) ? (screen.width-w)/2 : 0;
  TopPosition = (screen.height) ? (screen.height-h)/4 : 0;
  settings = 'height='+h+',width='+w+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+',resizable';
  Fenster = window.open(meineSeite,meinName,settings);
}

function stopLink(ev)
{
	if (window.event) {
		window.event.cancelBubble = true;
		window.event.returnValue = false;
		}
	if (ev && ev.stopPropagation && ev.preventDefault) {
		ev.stopPropagation();
		ev.preventDefault();
	}
}
