/* GETELEMENTSBYTAGNAMES */

function getElementsByTagNames(list,obj) {
	if (!obj) var obj = document;
	var tagNames = list.split(',');
	var resultArray = new Array();
	for (var i=0;i<tagNames.length;i++) {
		var tags = obj.getElementsByTagName(tagNames[i]);
		for (var j=0;j<tags.length;j++) {
			resultArray.push(tags[j]);
		}
	}
	var testNode = resultArray[0];
	if (!testNode) return [];
	if (testNode.sourceIndex) {
		resultArray.sort(function (a,b) {
				return a.sourceIndex - b.sourceIndex;
		});
	}
	else if (testNode.compareDocumentPosition) {
		resultArray.sort(function (a,b) {
				return 3 - (a.compareDocumentPosition(b) & 6);
		});
	}
	return resultArray;
}
/* Styleswitcher */
function setActiveStyleSheet(title) {
  var i, a, main;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
      a.disabled = true;
      if(a.getAttribute("title") == title) a.disabled = false;
    }
  }
}

function getActiveStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
  }
  return null;
}

function getPreferredStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1
       && a.getAttribute("rel").indexOf("alt") == -1
       && a.getAttribute("title")
       ) return a.getAttribute("title");
  }
  return null;
}

function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}
/* Append javascript enhancements to the page */
window.onload = function(e) {
//  var cookie = readCookie("style");
//  var title = cookie ? cookie : getPreferredStyleSheet();
//  setActiveStyleSheet(title);
createTOC();
add_print_link( 'pagetools' );
}
/*
window.onunload = function(e) {
  var title = getActiveStyleSheet();
  createCookie("style", title, 365);
}
*/
//var cookie = readCookie("style");
//var title = cookie ? cookie : getPreferredStyleSheet();
//setActiveStyleSheet(title);
function setNavigation(req) {
	var importHeader = document.getElementById('header');
	if (!importHeader) return;
	importHeader.innerHTML = req.responseText;
	var ToC = createTOC();
	if (ToC)
		document.getElementById('TOC').appendChild(ToC);
	if (location.hash)
		location.hash = location.hash;
	//document.getElementById('menuLink').onclick = getMainNav;
	if (Preferences.showSiteNav && Preferences.showSiteNav == 'yes') {
		document.getElementById('menuLink').onclick();
	}
}

/* TOC */
function createTOC() {

	var ToC = document.createElement('div');
	ToC.id = 'innertoc';
	var a = ToC.appendChild(document.createElement('span'));
	a.onclick = showhideToC;
	a.id = 'contentheader';
	a.innerHTML = 'Seiteninhalte anzeigen';
	var klaerchen = document.createElement('div');
	klaerchen.className = 'klaerchen';
	ToC.appendChild(klaerchen);
	var z = ToC.appendChild(document.createElement('div'));
	z.onclick = showhideToC;
	var Content = document.getElementById('text');
	var toBeToCced = getElementsByTagNames('h3,h4,h5', Content);
//	alert(toBeToCced);
//	if (toBeToCced.length < 2) return false;
	
	for (var i=0;i<toBeToCced.length;i++) {
		var textSrc = toBeToCced[i];
		var firstNode = textSrc.firstChild;
		if (firstNode.nodeName == 'A')
			textSrc = firstNode;
		var tmp = document.createElement('a');
		tmp.innerHTML = textSrc.innerHTML;
		tmp.className = 'page';
		z.appendChild(tmp);
		if (toBeToCced[i].nodeName == 'H4')
			tmp.className += ' indent';
		if (toBeToCced[i].nodeName == 'H5')
			tmp.className += ' extraindent';
		var headerId = toBeToCced[i].id || 'link' + i;		
		tmp.href = '#' + headerId;		
		toBeToCced[i].id = headerId;
		if (toBeToCced[i].nodeName == 'H2') {
			tmp.innerHTML = 'Top';
			tmp.href = '#top';
			toBeToCced[i].id = 'top';
		}
		var umbruch = document.createElement('br');
		z.appendChild(umbruch);
	}
//	document.getElementById('innertoc').appendChild(z);

	if (ToC && document.getElementById('inhaltsverzeichnis')) {
		document.getElementById('inhaltsverzeichnis').appendChild(ToC);
		document.getElementById('innertoc').lastChild.style.display = 'none';
	}
//	return ToC;

}

var ToCstate = 'none';

function showhideToC() {
	ToCstate = (ToCstate == 'none') ? 'block' : 'none';
	document.getElementById('contentheader').innerHTML = (ToCstate == 'none') ? 'Seiteninhalte anzeigen' : 'Seiteninhalte ausblenden';
	document.getElementById('innertoc').lastChild.style.display = ToCstate;
}

/* XMLHTTP-Request */
function sendRequest(url,callback,postData) {
	var req = createXMLHTTPObject();
	if (!req) return;
	var method = (postData) ? "POST" : "GET";
	req.open(method,url,true);
	req.setRequestHeader('User-Agent','XMLHTTP/1.0');
	if (postData)
		req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
	req.onreadystatechange = function () {
		if (req.readyState != 4) return;
		if (req.status != 200 && req.status != 304) {
//			alert('HTTP error ' + req.status);
			return;
		}
		callback(req);
	}
	if (req.readyState == 4) return;
	req.send(postData);
}

var XMLHttpFactories = [
	function () {return new XMLHttpRequest()},
	function () {return new ActiveXObject("Msxml2.XMLHTTP")},
	function () {return new ActiveXObject("Msxml3.XMLHTTP")},
	function () {return new ActiveXObject("Microsoft.XMLHTTP")}
];

function createXMLHTTPObject() {
	var xmlhttp = false;
	for (var i=0;i<XMLHttpFactories.length;i++) {
		try {
			xmlhttp = XMLHttpFactories[i]();
		}
		catch (e) {
			continue;
		}
		break;
	}
	return xmlhttp;
}

// Handle Requested Filecontent
/* MAIN NAVIGATION */

function getMainNav() {
//	document.getElementById('waitMessageNav').style.display = 'block';
	sendRequest('sitemap.html',setMainNav);
	this.innerHTML = 'hide site navigation';
	this.className = 'opened';
	this.onclick = removeMainNav;
	return false;
}

function setMainNav(req) {	
	var container = document.createElement('div');
	container.innerHTML = req.responseText;
	var x = container.getElementsByTagName('div');
	var siteMap;
	for (var i=0;i<x.length;i++) {
		if (x[i].id == 'mainMenu') {
			siteMap = x[i];
			break;
		}		
	}
	if (!siteMap) return;
//	var archiveLink = document.createElement('a');
//	archiveLink.href = '/sitemap.html#archive';
//	archiveLink.appendChild(document.createTextNode('Archives'));
//	siteMap.appendChild(archiveLink);

	var pageName = location.href,pageHash;
	if (pageHash = pageName.lastIndexOf('#') +1)
		pageName = pageName.substring(0,pageHash-1);

	var links = siteMap.getElementsByTagName('a');
	for (var i=0;i<links.length;i++) {
		var linkText = links[i].nextSibling;
		if (!linkText) continue;
		if (linkText.nodeType == 3) {
			links[i].title = linkText.nodeValue.substring(2);
			linkText.parentNode.removeChild(linkText);
		}
		if (links[i].href == pageName)
			highlightLink(links[i])
	}
	
	document.getElementById('siteNav').appendChild(siteMap);
	document.getElementById('siteNav').onclick = openCloseNav;
	container.innerHTML = '';

	var currentLink = document.getElementById('youarehere');
	if (currentLink) {	
		while(currentLink != siteMap) {
			if (currentLink.nodeName == 'DIV') {
				currentLink.style.display = 'block';
				var relatedHeader = currentLink.previousSibling;
				while (relatedHeader.nodeType != 1)
					relatedHeader = relatedHeader.previousSibling;
				if (relatedHeader.nodeName.indexOf('H') == 0) {
					relatedHeader.className = 'opened';
					relatedHeader.relatedItem = currentLink;
					openCloseNav['previous' + relatedHeader.nodeName] = relatedHeader;
				}
			}
			currentLink = currentLink.parentNode;
		}
	}
/*	else {
		var archivedPage = true;
		for (var i=0;i<blogs.length;i++) {
			if (location.href.indexOf(blogs[i]) != -1) {
				archivedPage = false;
				break;
			}
		}
		if (archivedPage) {
			highlightLink(archiveLink)
			var x = document.createElement('p');
			x.className = 'archived';
			x.appendChild(document.createTextNode(archivedText));
			siteMap.appendChild(x);
		}
	} */
//	document.getElementById('waitMessageNav').style.display = 'none';
}

function highlightLink(link) {
	link.id = 'youarehere';
	link.title = 'You are here';
	var originalText = link.firstChild.nodeValue;
	link.onclick = function () {
		this.firstChild.nodeValue = 'You are here';
		setTimeout(function () {
			link.firstChild.nodeValue = originalText;
		},1000);
		return false;
	};
}

function openCloseNav(e) {
	var evt = e || window.event;
	var evtTarget = evt.target || evt.srcElement;
	while (evtTarget.nodeType != 1)
		evtTarget = evtTarget.parentNode;
	if (evtTarget.nodeName.indexOf('H') != 0) return;

	if (!evtTarget.relatedItem) {
		var elementToBeOpened = evtTarget.nextSibling;
		while (elementToBeOpened.nodeType != 1)
			elementToBeOpened = elementToBeOpened.nextSibling;
		evtTarget.relatedItem = elementToBeOpened;
	}

	var newState = (evtTarget.relatedItem.style.display == 'block') ? 'none' : 'block';
	evtTarget.relatedItem.style.display = newState;
	evtTarget.className = (newState == 'none') ? '' : 'opened';
	
	if (Preferences.siteNavFold == 'one' && openCloseNav['previous' + evtTarget.nodeName]) {
		openCloseNav['previous' + evtTarget.nodeName].relatedItem.style.display = 'none';
		openCloseNav['previous' + evtTarget.nodeName].className = '';
		openCloseNav['previous' + evtTarget.nodeName] = null;
	}

	if (newState == 'block') {
		openCloseNav['previous' + evtTarget.nodeName] = evtTarget;
	}
	else {
		openCloseNav['previous' + evtTarget.nodeName] = undefined;
	}
}

var navStorage;

function removeMainNav() {
	var navElement = document.getElementById('siteNav');
	var nav = document.getElementById('mainMenu');
	if (nav) {
		navStorage = nav.parentNode.removeChild(nav);
		this.onclick = restoreMainNav;
	}
	else
		this.onclick = getMainNav;	
	this.innerHTML = 'show site navigation';
	this.className = '';
	return false;
}

function restoreMainNav() {
	document.getElementById('siteNav').appendChild(navStorage);
	this.innerHTML = 'hide site navigation';
	this.className = 'opened';
	this.onclick = removeMainNav;
	return false;
}
function test(intEventId) {
	//alert(intEventId);
	/*objTableRow = document.getElementById(intEventId);
	objTableRow.style.display = 'none';
	objTableRow.style.borderColor = '#ffffff';*/
	tb_remove();
	sendRequest('index.php?view=kalender&refreshTable=true', refreshTable);
}
function addCallback() {
	tb_remove();
	sendRequest('index.php?view=kalender&refreshTable=true', refreshTable);
}
function refreshTable() {
	window.location.reload();
}
function editCallback(formreference, intEventId) {
	objTableRow = document.getElementById(intEventId);
	objTableRow.style.backgroundColor = '#ffffaa';
	childElements = objTableRow.childNodes.length;
	//alert(objTableRow.lastChild.nodeName);
	j=0;
	for(i=0;i<childElements;i++) {
		if(objTableRow.childNodes[i].nodeName == 'TD') {
			j++;
			if(j===3) {
				objTableRow.childNodes[i].innerHTML = 'Dieser Termin wurde ge&auml;ndert.<br /><br /><a href="index.php?view=kalender">refresh</a>';
			}
			//alert('Zelle '+j+'\n'+objTableRow.childNodes[i].innerHTML);
		}
	}
	
	tb_remove();
	
	
}
function refreshTableRow() {
	
}