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();
	}
}


/*
	Developed by Robert Nyman, http://www.robertnyman.com
	Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/
var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};
