
// =========================================================
// telepark.wiki Professional

// This Software is copyright (c) 2007 by telepark, 
// Inh. Patrick Thomas, www.telepark.de. 
// All rights reserved. 

// You may not modify, alter, reverse engineer or emulate 
// the functionality, or create derivative works of the 
// Software in parts or it's entirety without the prior
// written consent of telepark.
// =========================================================

var reloadTimeout=2;
//tree object
var tree;
//id for new (unsaved) item
var newItemId = "-1";
// set context menu un-called
var ismenucalled = false;
// define from where the script is called
var ajaxFolder = true;
// itemId for reload
var tmpID = -1;
// selected page id
var selectedEditorPageID = '';
var tmpUSSid;
var tmpState;
var tmpAjaxflag;
//default wait refresh ms
var defaultTime=50;
var permsloaded=false;
var uploadenabled=false;
var homepage="";
var treeLoadedData="";
var pageLoadProgress=false;
var stylesLoadProgress=false;
var toutIDs=new Array;
var intIDs=new Array;
var scriptAllCount = 1;
var scriptCount = 0;
var isGAOverlay=false;
if (readCookie("GASO")!="") isGAOverlay=true;

var	ie=document.all ? true : false;

var rootURL=window.location.href.substr(0,window.location.href.lastIndexOf("/")+1);

window.onresize = windowResize;

// send notification email (if necessary)		// telepark.wiki pro
sendNotification();


// ==============
// INITIALIZATION
// ==============

// set width and height of div elements
function windowResize() {
setCurrFunc("windowResize");
	if (document.getElementById('main') && document.getElementById('treebox')) {
		var tBanner=document.getElementById('topbanner').offsetHeight;
		document.getElementById('main').style.top=tBanner+"px";
		document.getElementById('treebox').style.top=tBanner+"px";
		var width100=document.body.clientWidth-30;
		var realTreeWidth=treeWidth;
		var realContentWidth=contentWidth;
		if (realTreeWidth.indexOf('%')!=-1) realTreeWidth=((parseInt(realTreeWidth)*width100)/100);
		realTreeWidth=parseInt(realTreeWidth);
		var maxContentWidth=width100-realTreeWidth;
		if (realContentWidth.indexOf('%')!=-1) realContentWidth=((parseInt(realContentWidth)*maxContentWidth)/100);
		realContentWidth=parseInt(realContentWidth);
		document.getElementById('content').style.width=realContentWidth+"px";
		document.getElementById('textlinks').style.width=realTreeWidth+"px";
		document.getElementById('main').style.left=realTreeWidth+10+"px";
		document.getElementById('main').style.width=realContentWidth+"px";
		document.getElementById('treebox').style.width=realTreeWidth+"px";
	} else {
		setTimeout("windowResize()",defaultTime);
	}
setCurrFunc("");
}

function gaToTree(el) {
	var inner=el.innerHTML;
	var tmp=inner.split("<");
	var t=tmp[0].replace(/^\s+|\s+$/g, '');
	if (t=="") return;
	var tmp2=new Array;
	for (var i=1; i<tmp.length; i++) {
		tmp2[tmp2.length]=tmp[i];
	}
	var inner="<"+tmp2.join("<");
	var tds=document.getElementsByTagName("td");
	for (var i=0; i<tds.length; i++) {
		if (tds[i] && tds[i].title && tds[i].title.replace(/^\s+|\s+$/g, '')==t) {
			tds[i].innerHTML+=inner.replace(/position: absolute/gi,"position: static; z-index: 20000");
			break;
		}
	}
}

function showGAOverlay(pageID) {
	working(true);
	var found=false;
	var obj="";
	var els=document.getElementsByTagName("div");
	for (var i=0; i<els.length; i++) {
		if (els[i] && els[i].id && els[i].id.indexOf("bars_")!=-1) {
			found=true;
			break;
		}
	}
	if (!found) {
		setTimeout("showGAOverlay('"+pageID+"')",2000);
	} else {
		if (typeof(allPages[pageID])!="undefined") {
			var tmp=window.location.href.split("#");
			if ((tmp[0]!=rootUrl2+allPages[pageID]) && !((tmp[0]==rootUrl2+"/" || tmp[0]==rootUrl2) && pageID=="wiki")){
				window.location.href=rootUrl2+allPages[pageID];
			} else {
				var els=document.getElementsByTagName("a");
				for (var i=0; i<els.length; i++) {
					if (els[i] && els[i].id && els[i].id.indexOf("link_")!=-1) 	gaToTree(els[i]);
				}
				var obj=document.getElementById("content");
				var obj2=document.getElementById("hiddenContent");
				if (obj && obj2) {
					var inner=obj2.innerHTML;
					obj2.innerHTML="";
					obj.innerHTML=inner;				
				}
				//var obj=document.getElementById("treebox");
				//var obj2=document.getElementById("hiddenTree");
				//if (obj && obj2) obj.innerHTML+=obj2.innerHTML;
				setTimeout("fixZIndex()",defaultTime);
			}
		} else {
			setTimeout("showGAOverlay('"+pageID+"')",500);
		}
	}
}

function fixZIndex() {
	var els=document.getElementsByTagName("div");
	for (var i=0; i<els.length; i++) {
		if (els[i] && els[i].id) {
		  	if (els[i].id.indexOf("bars_")!=-1) els[i].style.zIndex="25000";
		  	if (els[i].id.indexOf("detail_")!=-1) els[i].style.zIndex="30000";
		}
	}
	var els=document.getElementsByTagName("a");
	notworking(true);
}

var nodrop=false;
var startedLoading=false;

//load tree on page
function loadTree(){
setCurrFunc("loadTree");
if (!permsloaded) {
	setTimeout("loadTree()",10);
} else {
	getPrefix();
	if (menuMD5=="") xmlChanged();
	windowResize();
	status(true);
	var pre=rootURL;
	aMenu=new dhtmlXContextMenuObject('120',0,"imgs/");
	aMenu.menu.setGfxPath("imgs/");
	aMenu.menu.loadXML(pre + "UserFiles/Menu/context.xml?random=" + Math.random());				
    aMenu.setContextMenuHandler(onButtonClick);
	aMenu.setOnShowMenuHandler(changeMenu);
	aMenu._fixMenuPosition=function(){}

	tree = new dhtmlXTreeObject("treebox","","100%",0);
	if (ie6) {
		tree.enableFixedMode(true);
	}
	tree.setImagePath(pre + "imgs/");
	tree.setDragBehavior("complex");
	if (!nodrop) {
		tree.enableDragAndDrop(true);
		tree.enableDragAndDropScrolling(true);
		tree.setDragHandler(onBeforeDrop);
		tree.setDropHandler(onDrop);
	}
	tree.setOnDblClickHandler(onDoubleClick);
	tree.setOnClickHandler(addClick);
	tree.enableContextMenu(aMenu); //link context menu to tree
	tree.enableSmartXMLParsing(false);//false to disable
	tree.setOnLoadingEnd(startFunc); //go to after loading
	tree.setSerializationLevel(true,true);
	tree.enableTreeLines(false);
	tree.setEscapingMode("utf8");
	tree.setStdImages("leaf_closed.gif","leaf_open.gif","leaf_closed.gif");
	tree.enableMultiselection(true);
	tree.enableAutoTooltips(true);
	tree.enableMultiLineItems("100%"); 
	startedLoading=true;
	tree.loadXML(pre + "UserFiles/Menu/menu.xml?random=" + Math.random());
}
setCurrFunc("");
}

var treeLoaded=false;
var itemChange=new Array;

// call directly after tree is loaded
function startFunc() {
setCurrFunc("startFunc");
	if (!startedLoading) return;
	startedLoading=false;
	treeLoaded=true;
	if (treeLoadedData=="") treeLoadedData=tree.serializeTree();
	if (!savingXML) {
	notworking();
	checkLockFiles();			// telepark.wiki pro
	if (!moduleSubmitted) {
		tree.closeAllItems();
		var wikiitem = true;
		if (tmpID != -1) {
			var itemId = tmpID;
			wikiitem = false;
		} else {
		  if (GET!='') {
		  	var itemId = GET;
		  	wikiitem = false;
		  }
		}
		if (wikiitem == true) {
			var itemId = "wiki";
			if (homepage!="") itemId=homepage;
		}
		tree.selectItem(itemId,true);
	}
	//toggleTextLinks();
	setTimeout("init_onMover()",100);
	init_Plink();
	if ((superadmin) && (langChanged=="YES")) {
		langChanged="NO";
		is_loaded(itemId);
	}
	}
setCurrFunc("");
}

function is_loaded(itemId) {
setCurrFunc("is_loaded");
	if (document.getElementById('content').innerHTML=="") {
		setTimeout("is_loaded('"+itemId+"')",defaultTime);
	} else {
		setTimeout("showSettings('"+itemId+"')",defaultTime*10);
	}
setCurrFunc("");
}

currNodeBack="";
currNodeFont="";
var lastSelected="";

function init_onMover() {
setCurrFunc("init_onMover");
	var nodes=getElementsByClass("standartTreeRow");
	for (var i=0; i<nodes.length; i++) {
		nodes[i].onmouseover=nodeMoverFunc;
		nodes[i].onmouseout=nodeMoutFunc;
		nodes[i].style.color=color1;
		nodes[i].style.backgroundColor=color2;
	}
setCurrFunc("");
}

function nodeMoverFunc() {
setCurrFunc("nodeMoverFunc");
	currNodeBack=getBackgroundColor(this);
	this.style.backgroundColor=nodeMoverBack;
	currNodeFont=getColor(this);
	this.style.color=nodeMoverFont;
	if (this.childNodes[0].className=="selectedTreeRow") {
		this.childNodes[0].style.backgroundColor="navy";
		this.childNodes[0].style.color="white";
	}
setCurrFunc("");
}

function nodeMoutFunc() {
setCurrFunc("nodeMoutFunc");
	this.style.backgroundColor=currNodeBack;
	this.style.color=currNodeFont;
	if (this.childNodes[0].className=="selectedTreeRow") {
		this.childNodes[0].style.backgroundColor="navy";
		this.childNodes[0].style.color="white";
	}
setCurrFunc("");
}

function addClick(itemId) {
setCurrFunc("addClick");
	if (lastSelected!="") {
		var objx=tree._globalIdStorageFind(lastSelected,0,true);
		if (objx) {
			var tmpx=objx.htmlNode.childNodes[0].childNodes[0].childNodes[3];
			tmpx.childNodes[0].style.backgroundColor=currNodeBack;
			tmpx.childNodes[0].style.color=currNodeFont;
		}
	}
	var objx=tree._globalIdStorageFind(itemId,0,true);
	if (objx) {
		var tmpx=objx.htmlNode.childNodes[0].childNodes[0].childNodes[3];
		tmpx.childNodes[0].style.backgroundColor="navy";
		tmpx.childNodes[0].style.color="white";
	}
	lastSelected=itemId;
	onSelect(itemId);
setCurrFunc("");
}

function init_Plink() {
setCurrFunc("init_Plink");
	pL=document.getElementById('printPageSpan');
	if (printLink=="YES") {
		pL.style.display="inline";
	} else {
		pL.style.display="none";
	}
setCurrFunc("");
}

// ================
// HELPER FUNCTIONS
// ================

function addEvent(obj, evType, fn){ 
setCurrFunc("addEvent");
 if (obj.addEventListener){ 
   obj.addEventListener(evType, fn, false); 
setCurrFunc("");
   return true; 
 } else if (obj.attachEvent){ 
   var r = obj.attachEvent("on"+evType, fn); 
setCurrFunc("");
   return r; 
 } else { 
setCurrFunc("");
   return false; 
 } 
}

function removeEvent( obj, type, fn ) {
setCurrFunc("removeEvent");
  if ( obj.detachEvent ) {
    obj.detachEvent( 'on'+type, fn );
    obj[type+fn] = null;
  } else
    obj.removeEventListener( type, fn, false );
setCurrFunc("");
}

//addBookmark
function addBookmark() {
setCurrFunc("addBookmark");
	var hp = new HTTPPost();
	if (ajaxFolder == false) var pre = "";
	else var pre = "ajax/";
	hp.postData(pre + 'getSEOUrl.php', "pageID="+tree.getSelectedItemId(), proceedAddBookmark, true);
setCurrFunc("");
}

function proceedAddBookmark(req) {
setCurrFunc("proceedAddBookmark");
	if (req.readyState == 4)	{
		if (req.status == 200)	{
			var title=tree.getSelectedItemText();
			var url=rootURL+req.responseText;
			if (window.sidebar) { 
				window.sidebar.addPersistentPanel(title, url, ""); 
			} else if( document.all ) {
				window.external.AddFavorite( url, title);
			} else if( window.opera && window.print ) {
				var a = document.createElement("A");
				a.rel = "sidebar";
				a.target = "_search";
				a.title = title;
				a.href = url;
				a.click();
		 	}
		 }
	}
setCurrFunc("");
}

// close message box
function closeMessageBox() {
setCurrFunc("closeMessageBox");
	if (document.getElementById('innerMessage')) document.getElementById('innerMessage').innerHTML = "";
	if (document.getElementById('messageBox')) document.getElementById('messageBox').style.display = "none";
setCurrFunc("");
}

// set ajax flag
function ajaxFlag(mode) {
setCurrFunc("ajaxFlag");
	if (mode == 'no')
		ajaxFolder = false;
	else
		ajaxFolder = true;
setCurrFunc("");
}

// toggle div visibility
function toggleDivDisplay(id) {
setCurrFunc("toggleDivDisplay");
	var div = document.getElementById(id);
	if (div) {
		// show
		if (div.style.display == 'none') {
			div.style.display = 'block';
		}
		// hide
		else {
			div.style.display = 'none';
		}
	}
setCurrFunc("");
}

// get child ids
function getChildIds(pageId) {
setCurrFunc("getChildIds");
	var childItems = tree.getSubItems(pageId);
	var children = childItems.split(",");
	var idstring = "";
	for (var i=0; i<children.length; i++) {
		idstring = idstring + "," + children[i];
		if (tree.hasChildren(children[i])) {
			idstring = idstring + "," + getChildIds(children[i]);
		}
	}
setCurrFunc("");
	return idstring.substr(1);
}


// get query parameters
function query_params(querystring) {
setCurrFunc("query_params");
  if (querystring == '') return;
  var string = decodeURI(querystring);
  string = string.slice(1);
  var pairs = string.split("&");
  for (var i=0; i < pairs.length; i++) {
    var name = pairs[i].substring(0, pairs[i].indexOf("="));
    var value = pairs[i].substring(pairs[i].indexOf("=")+1, pairs[i].length);
    this[name] = value;
  }
setCurrFunc("");
}

// show status of request on page
function status(fl){
setCurrFunc("status");
	if (!persistant) {
		var d = document.getElementById("loading");
		if (d) {
			if(fl)
				d.style.display = "block";
			else
				d.style.display = "none";
		}
	}
setCurrFunc("");
}

// no function
function nofunction(req) {
setCurrFunc("nofunction");
	if (req.readyState == 4)	{
		if (req.status == 200)	{
			//displaySystemMessage(req);
		}
	}
setCurrFunc("");
	return;
}

// write change timestamp
function writeChangestamp(){
setCurrFunc("writeChangestamp");
	var hp = new HTTPPost();
	if (ajaxFolder == false) var pre = "";
	else var pre = "ajax/";
	hp.postData(pre + 'writeChangestamp.php', '', proceedWriteChangestamp, true);
setCurrFunc("");
}

// read change timestamp
function readChangestamp(){
setCurrFunc("readChangestamp");
	var hp = new HTTPPost();
	if (ajaxFolder == false) var pre = "";
	else var pre = "ajax/";
	hp.postData(pre + 'readChangestamp.php', '', proceedReadChangestamp, true);
setCurrFunc("");
}

// proceed action based on timestamp
function proceedReadChangestamp(req) {
setCurrFunc("proceedReadChangestamp");
	if (req.readyState == 4)	{
		if (req.status == 200 && req.responseXML && req.responseXML.documentElement)	{
			var timestamp = getXMLData(req.responseXML.documentElement.getElementsByTagName('timestamp'));
			var err = getXMLData(req.responseXML.documentElement.getElementsByTagName('error'));
			if (err != "") logError(err);
			if (timestamp != "" && timestamp != currentTime) {
				currentTime = timestamp;
				if (!savingXML) reloadTree(tree.getSelectedItemId());
			}
		}
	}
	status();
setCurrFunc("");
}

// proceed action based on timestamp
function proceedWriteChangestamp(req) {
setCurrFunc("proceedWriteChangestamp");
	if (req.readyState == 4)	{
		if (req.status == 200 && req.responseXML && req.responseXML.documentElement)	{
			var timestamp = getXMLData(req.responseXML.documentElement.getElementsByTagName('timestamp'));
			currentTime = timestamp;
			unlockXML();
			savingXML=false;
			sendNotification();
			if (nodrop) {
				nodrop=false;
				reloadTree(beforeDropPage);
				beforeDropPage=-1;
			} else {
				startedLoading=true;
				startFunc();
			}
			setTimeout("closeAjaxLoader()",defaultTime);
		}
	}
	status();
setCurrFunc("");
}

function closeAjaxLoader() {
setCurrFunc("closeAjaxLoader");
	if (treeLoaded) {
		notworking(true);
	} else {
		setTimeout("closeAjaxLoader()",defaultTime);
	}
setCurrFunc("");
}

// reload tree and jump to itemId

function reloadTree(itemId) {
setCurrFunc("reloadTree");
	treeLoaded=false;
	working();
	xmlChanged();
	setTimeout("reloadTreeStep2('"+itemId+"')",10);
setCurrFunc("");
}

function reloadTreeStep2(itemId) {
setCurrFunc("reloadTreeStep2");
	if (!checkingXML) {
		if (xmlIsChanged) {
			document.getElementById('treebox').innerHTML = '';
			delete tree;
			tmpID = itemId;
			loadTree();
		} else {
			tmpID = itemId;
			startedLoading=true;
			startFunc();
		}
	} else {
		setTimeout("reloadTreeStep2('"+itemId+"')",10);
	}
setCurrFunc("");
}

function reloadTreeToWrite(itemId) {
setCurrFunc("reloadTreeToWrite");
	xmlChanged();
	setTimeout("reloadTreeToWriteStep2('"+itemId+"')",10);
setCurrFunc("");
}

function reloadTreeToWriteStep2(itemId) {
setCurrFunc("reloadTreeToWriteStep2");
	if (!checkingXML) {
		if (xmlIsChanged) {
			document.getElementById('treebox').innerHTML = '';
			delete tree;
			tmpID = itemId;
			loadTree();
		} else {
			tmpID = itemId;
			startedLoading=true;
			startFunc();
		}
	} else {
		setTimeout("reloadTreeToWriteStep2('"+itemId+"')",10);
	}
setCurrFunc("");
}
/*
function reloadTree(itemId) {
	treeLoaded=false;
	working();
	document.getElementById('treebox').innerHTML = '';
	delete tree;
	tmpID = itemId;
	loadTree();
}

function reloadTreeToWrite(itemId) {
	document.getElementById('treebox').innerHTML = '';
	delete tree;
	tmpID = itemId;
	loadTree();
}
function reloadTreeStep2(itemId) {
	treeLoaded=false;
	working();
	document.getElementById('treebox').innerHTML = '';
	delete tree;
	tmpID = itemId;
	loadTree();
}

function reloadTreeToWriteStep2(itemId) {
	document.getElementById('treebox').innerHTML = '';
	delete tree;
	tmpID = itemId;
	loadTree();
}
*/
// display system messages
function displaySystemMessage(message,dontclose) {
setCurrFunc("displaySystemMessage");
	if (message != '' && message != 'undefined') {
		document.getElementById('innerMessage').innerHTML = message;
		document.getElementById('messageBox').style.display = 'block';
		if ((!savingXML) && (!dontclose)) setTimeout("closeMessageBox()",5000);
	}
setCurrFunc("");
}

//get elements by class
function getElementsByClass(searchClass,node,tag) {
setCurrFunc("getElementsByClass");
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
setCurrFunc("");
	return classElements;
}

function getBackgroundColor(el) {
setCurrFunc("getBackgroundColor");
	if (el.style.backgroundColor!="") return el.style.backgroundColor;
	if (el.currentStyle) return el.currentStyle.backgroundColor;
	if (document.defaultView) return document.defaultView.getComputedStyle(el, '').getPropertyValue("background-color");
setCurrFunc("");
	return "";
}

function getColor(el) {
setCurrFunc("getColor");
	if (el.style.color!="") return el.style.color;
	if (el.currentStyle) return el.currentStyle['color'];
	if (window.getComputedStyle) return document.defaultView.getComputedStyle(el, null).getPropertyValue("color");
setCurrFunc("");
	return "";
}


// ===============
// CLICK FUNCTIONS
// ===============

// on select
var pageLoaded=false;

function onSelect(itemId){
setCurrFunc("onSelect");
	pageLoaded=false;
	working();
	hideLoginBox();
	tmpID = itemId;
	if (!(tree.getUserData(itemId,'sa') == 1 && superadmin != true)) {		// telepark.wiki pro
		tree.openItem(itemId);
	}
	// unlock previous page when coming from editor page
	if (selectedEditorPageID != '' && itemId != selectedEditorPageID) {		// telepark.wiki pro
		unLockFile(selectedEditorPageID);
	}
	// coming from new page
	if(itemId!=newItemId){
		if(tree.getLevel(newItemId)!=0){
			if(confirm("Do you want to save changes?")){	//save changes to new item
				tree.selectItem(newItemId,false);
				// saveItem();
				document.wikiForm.submit();
				return;
			}
			tree.deleteItem(newItemId);
			status();
		}
	}else{	//set color to new item label
		tree.setItemColor(itemId,"red","pink");
	}
	getPage(itemId);
	ismenucalled = false;
setCurrFunc("");
}

// on double click
function onDoubleClick(itemId) {
setCurrFunc("onDoubleClick");
	if (ismenucalled != false) return false;

	ismenucalled = true;

	status(true);
	hideLoginBox();
	// superadmin items
	if (tree.getUserData(itemId,'sa') == 1) {			// telepark.wiki pro
		if (loggedIn == true && superadmin != false) {
			editPage(itemId);
		}
		else {
			status();
setCurrFunc("");
			return false;
		}
	}
	// other items
	else {
		if (((parseInt(permissions[itemId])&P_EDIT)!=0) || superadmin) {
			editPage(itemId);
		}
		else {
			status();
setCurrFunc("");
			return false;
		}
	}
setCurrFunc("");
}

// on context menu click
function onButtonClick(menuItemValue,itemId){
setCurrFunc("onButtonClick");
	closeActionsBox();
	if (itemId == "-1") itemId = tree.getSelectedItemId();

	if (ismenucalled != false) return false;

	ismenucalled = menuItemValue;
	
	// new page
	if((menuItemValue=="add") && (!loadingEditor)) {
		//addNewPeer();
		//pageLoaded=false;
		addNewChild();
		addPageWait();
	}
	// edit
	else if(menuItemValue=="edit") {
		editPage(itemId);
	}
	// delete
	else if(menuItemValue=="delete" && itemId!='wiki') {
		deleteNode(itemId);
	}
	// sort
	else if(menuItemValue=="sort") {
		sortNode(itemId);
	}
	//printPage
	else if(menuItemValue=="print") {
		printPage();
	}	
	//changepass
	else if(menuItemValue=="changepass") {
		changePassword();
	}
	//settings
	else if(menuItemValue=="settings") {
		showSettings(itemId);
	}
	//page privileges
	else if(menuItemValue=="privileges") {
		showPrivileges(itemId);
	}

setCurrFunc("");
    return false;
}


// =============
// DRAG AND DROP
// =============

// before drop
function onBeforeDrop(sourceId,targetId) {
setCurrFunc("onBeforeDrop");
	if (targetId==0) return false;
	if (sourceId=="wiki") return false;
	if (!superadmin) {
		if ((permissions[sourceId]&P_DRAGNDROP)==0) return false; 
		if ((permissions[targetId]&P_DRAGNDROP)==0) return false;
		if ((permissions[targetId]&P_ADD)==0) return false; 
		if ((permissions[targetId]&P_EDIT)==0) return false; 
	}
	if (savingXML) return false;
	// if (tree.getLevel(targetId)>maxLevels || (loggedIn == false && publiclogin == false))  {
	if (tree.getLevel(targetId)>maxLevels || (tree.getUserData(targetId,'sa') == 1 && superadmin != true) || (tree.getUserData(sourceId,'sa') == 1 && superadmin != true))  {	// telepark.wiki pro
setCurrFunc("");
		return false;
	}
	else {
setCurrFunc("");
		return true;
	}
}

var beforeDropPage=-1;

// on drop
function onDrop(sourceId, targetId,beforeId) {
setCurrFunc("onDrop");
	if (!savingXML) {
		nodrop=true;
		tree.enableDragAndDrop(false);
		tree.enableDragAndDropScrolling(false);
		tree.setDropHandler("void(0)");
		tree.setDragHandler("void(0)");
		savingXML=true;
		working(true);
		canWriteXML="NO";
		treeLoaded=false;
		checkWriteXML(sourceId);
		proceedOnDrop(sourceId, targetId,beforeId);
	}
setCurrFunc("");
}

function proceedOnDrop(sourceId, targetId,beforeId) {
setCurrFunc("proceedOnDrop");
	if (treeLoaded && (canWriteXML=="YES")) {
		var sourceNode=tree._globalIdStorageFind(sourceId);
		var targetNode=tree._globalIdStorageFind(targetId);
		var beforeNode=tree._globalIdStorageFind(beforeId);
		tree._moveNodeTo(sourceNode,targetNode,beforeNode);
		userDataWritten=true;
		saveXMLTree();
	} else {
		setTimeout("proceedOnDrop('"+sourceId+"', '"+targetId+"', '"+beforeId+"')",defaultTime);
	}
setCurrFunc("");
}


// ============
// CONTEXT MENU
// ============

// change menu
function changeMenu(itemId) {
setCurrFunc("changeMenu");
	tree.selectItem(itemId,true);
	//hide all subblocks
	aMenu.menu.hideButtons('sort');
	aMenu.menu.hideButtons('add');
	aMenu.menu.hideButtons('edit');
	aMenu.menu.hideButtons('delete');
	aMenu.menu.hideButtons('print');
	aMenu.menu.hideButtons('changepass');
	aMenu.menu.hideButtons('settings');
	aMenu.menu.hideButtons('privileges');
	if (superadmin) aMenu.menu.showButtons('privileges');

	if (itemId == 'wiki') {
		if (((permissions[itemId]&P_ADD)!=0) || (superadmin)) aMenu.menu.showButtons('add');
		if (((permissions[itemId]&P_EDIT)!=0) || (superadmin)) aMenu.menu.showButtons('edit');
		if (((permissions[itemId]&P_DRAGNDROP)!=0) || (superadmin) && (tree.hasChildren(itemId) > 0)) aMenu.menu.showButtons('sort');
		if (((permissions[itemId]&P_READ)!=0)  || (superadmin)) aMenu.menu.showButtons('print');
		if (loggedIn && ((!superadmin) && (canchangepass=="YES"))) aMenu.menu.showButtons('changepass');
		if (superadmin) aMenu.menu.showButtons('settings');
	}
	else if (tree.hasChildren(itemId) > 0) {
		if ((((permissions[itemId]&P_ADD)!=0) || (superadmin)) && (tree.getLevel(itemId)<=maxLevels)) aMenu.menu.showButtons('add');
		if (((permissions[itemId]&P_EDIT)!=0) || (superadmin)) aMenu.menu.showButtons('edit');
		if (((permissions[itemId]&P_DELETE)!=0) || (superadmin)) aMenu.menu.showButtons('delete');
		if (((permissions[itemId]&P_DRAGNDROP)!=0) || (superadmin)) aMenu.menu.showButtons('sort');
		if (((permissions[itemId]&P_READ)!=0) || (superadmin)) aMenu.menu.showButtons('print');
	}
	else {
		if ((((permissions[itemId]&P_ADD)!=0) || (superadmin)) && (tree.getLevel(itemId)<=maxLevels)) aMenu.menu.showButtons('add');
		if (((permissions[itemId]&P_EDIT)!=0) || (superadmin)) aMenu.menu.showButtons('edit');
		if (((permissions[itemId]&P_DELETE)!=0) || (superadmin)) aMenu.menu.showButtons('delete');
		if (((permissions[itemId]&P_READ)!=0) || (superadmin)) aMenu.menu.showButtons('print');
	}
setCurrFunc("");
}

// prevent context menu from showing when it is not necessary (no menu associated with item)
function doNotShowMenu(){
setCurrFunc("doNotShowMenu");
	aMenu.menu.setOnShowHandler(function(){aMenu.menu.hideBar();aMenu.menu.setOnShowHandler(function(){})});
setCurrFunc("");
}


// ==============
// ADD TREE ITEMS
// ==============

// add new node next to currently selected (or the first in tree)
function addNewPeer(){
setCurrFunc("addNewPeer");
	if(tree.getLevel(newItemId)!=0){//check if unsaved item already exists
		alert("New Item (unsaved) already exists")
setCurrFunc("");
		return false;
	}
	var selectedId = tree.getSelectedItemId();
	if(selectedId!=""){
		tree.insertNewNext(selectedId,newItemId,newItemLabel,"","leaf_closed.gif","leaf_open.gif","leaf_closed.gif","SELECT,CALL",0)
	}else{
		tree.insertNewItem(0,newItemId,newItemLabel,"","leaf_closed.gif","leaf_open.gif","leaf_closed.gif","SELECT,CALL",0)
	}
setCurrFunc("");
	return;
}

// add new child node to selected item (or the first item in tree)
function addNewChild(){
setCurrFunc("addNewChild");
	if(tree.getLevel(newItemId)!=0){//check if unsaved item already exists
		alert("New Item (unsaved) already exists")
setCurrFunc("");
		return false;
	}
	var selectedId = tree.getSelectedItemId();
	if(selectedId!=""){
		itemChange['selectedId']=selectedId;
	}else{
		itemChange['selectedId']=0;
	}
	itemChange['newItemId']=newItemId;
	itemChange['newItemLabel']=newItemLabel;
	itemChange['empty']="";
	itemChange['closed1']="leaf_closed.gif";
	itemChange['open']="leaf_open.gif";
	itemChange['closed2']="leaf_closed.gif";
	itemChange['options']="SELECT,CALL";
	tree.insertNewItem(itemChange['selectedId'],itemChange['newItemId'],itemChange['newItemLabel'],itemChange['empty'],itemChange['closed1'],itemChange['open'],itemChange['closed2'],itemChange['options'],0)
setCurrFunc("");
	return;
}


// ================
// UPDATE FUNCTIONS
// ================

// update item
function doUpdateItem(id, label){
setCurrFunc("doUpdateItem");
	var f = document.forms["wikiForm"];
	f.item_id.value = id;
	tree.changeItemId(tree.getSelectedItemId(),id);
	tree.setItemText(id,label);
	tree.setItemColor(id,color1,color2);
	status();
setCurrFunc("");
}

// update item (tree)
function updateItem(pageID,label,name,value,recursive) {
setCurrFunc("updateItem");
	savingXML=true;
	working(true);
	canWriteXML="NO";
	treeLoaded=false;
	checkWriteXML(itemChange['selectedId']);
	proceedUpdate(pageID,label,name,value,recursive);
setCurrFunc("");
}

function proceedUpdate(pageID,label,name,value,recursive) {
setCurrFunc("proceedUpdate");
	if (treeLoaded && (canWriteXML=="YES")) {
		if (tree._globalIdStorageFind(pageID)) {
			tree.setItemText(pageID,label);
			tree.selectItem(pageID,true);
		} else {
			tree.deleteItem(newItemId);
			tree.insertNewItem(itemChange['selectedId'],pageID,label,itemChange['empty'],itemChange['closed1'],itemChange['open'],itemChange['closed2'],itemChange['options'],0)
		}
		tree.setItemColor(pageID,color1,color2);
		userDataWritten=false;
		writeUserData(pageID,name,value,recursive);
		saveXMLTree();

	} else {
		setTimeout("proceedUpdate('"+pageID+"','"+label.replace(/'/g,"\\'")+"','"+name+"','"+value+"','"+recursive+"')",defaultTime);
	}
setCurrFunc("");
}

var userDataWritten=false;

// write user data to tree										// telepark.wiki pro
function writeUserData(pageId,name,value,recursive) {
setCurrFunc("writeUserData");
	var ids = "";
	// set user data
	tree.setUserData(pageId,name,value);
	updateSuperadminState(pageId,value,'-1');
	// set recursive user data
	if (recursive == true && tree.hasChildren(pageId)) {
		ids = getChildIds(pageId);
		idlist = ids.split(",");
		// write user data
		for (i=0; i<idlist.length; i++) {
			tree.setUserData(idlist[i],name,value);
		}
	}
	userDataWritten=true;
setCurrFunc("");
}

// update superadmin state (content file)
function updateSuperadminState(id,state,ajaxflag,reverse){					// telepark.wiki pro
setCurrFunc("updateSuperadminState");
	tmpUSSid = id;
	tmpState = state;
	tmpAjaxflag = ajaxflag;
	var hp = new HTTPPost();
	var param = 'pageID=' + id + "&state=" + state;
	if (ajaxflag == -1) var prefix = "";
	else var prefix = "ajax/";
	if (reverse == 1) {
		if (ajaxflag != -1) var prefix = "";
		else var prefix = "ajax/";
	}
	hp.postData(prefix + "updateSuperadminState.php", param, updateSuperadminStateProceed, true);
setCurrFunc("");
}

function updateSuperadminStateProceed(req) {
setCurrFunc("updateSuperadminStateProceed");
	if (req.readyState == 4)	{
		if (req.status != 200)	{
			updateSuperadminState(tmpUSSid,tmpState,tmpAjaxflag,1);
		}
	}
	status();
setCurrFunc("");
}


// ============
// DELETE ITEMS
// ============

// delete item (from database)
function deleteNode(){
setCurrFunc("deleteNode");
	status(true);
	// no deletion if item has children
	if (tree.hasChildren(tree.getSelectedItemId())) {
		alert(str_deletenotpossible);
		status();
		ismenucalled = false;
setCurrFunc("");
		return false;
	}
	// no deletion id item is wiki node
	if (tree.getSelectedItemId == "wiki") {
		alert(str_wikiitemdeletenotpossible);
		status();
		ismenucalled = false;
setCurrFunc("");
		return false;
	}
	// delete node from db
	if(tree.getSelectedItemId()!=newItemId){
		if(!confirm(str_askdeletenode)) {
			ismenucalled = false;
			status();
setCurrFunc("");
			return false;
		}
		var selectedId = tree.getSelectedItemId();
		deleteContentFile(selectedId);
		ismenucalled = false;
	// delete unsaved node
	}else{
		ismenucalled = false;
		deleteContentFile(newItemId);
	}
setCurrFunc("");
}

// delete item (content file)
function deleteContentFile(id){
setCurrFunc("deleteContentFile");
	var hp = new HTTPPost();
	var pageID = 'pageID=' + id;
	if (ajaxFolder == false) var pre = "";
	else var pre = "ajax/";
	document.getElementById('content').innerHTML = '';
	hp.postData(pre + 'deletePage.php', pageID, deleteTreeItem, true);
setCurrFunc("");
}

// delete item (tree)
function deleteTreeItem(req) {
setCurrFunc("deleteTreeItem");
	if (req.readyState == 4)	{
		if (req.status == 200 && req.responseXML && req.responseXML.documentElement)	{
			var pageID = getXMLData(req.responseXML.documentElement.getElementsByTagName('pageID'));
			var err = getXMLData(req.responseXML.documentElement.getElementsByTagName('error'));
			if (err != "") logError(err);
			proceedDeleteTreeItem(pageID);
		}
	}
	status();
setCurrFunc("");
}

function proceedDeleteTreeItem(pageID) {
setCurrFunc("proceedDeleteTreeItem");
	savingXML=true;
	working(true);
	canWriteXML="NO";
	treeLoaded=false;
	var pId = tree.getParentId(pageID);	checkWriteXML(pId);
	proceedDeleteTreeItem2(pageID);
setCurrFunc("");
}

function proceedDeleteTreeItem2(pageID) {
setCurrFunc("proceedDeleteTreeItem2");
	if (treeLoaded && (canWriteXML=="YES")) {
		var pId = tree.getParentId(pageID);		if (pId!="0") tree.selectItem(pId,true);		tree.deleteItem(pageID);		userDataWritten=true;
		saveXMLTree();
	} else {
		setTimeout("proceedDeleteTreeItem2('"+pageID+"')",defaultTime);
	}
setCurrFunc("");
}

// delete comment

function deleteComment(timeVar){
setCurrFunc("deleteComment");
	if (confirm(str_commentDelete)) {
		var hp = new HTTPPost();
		if (ajaxFolder == false) var pre = "";
		else var pre = "ajax/";
		var post="pageID="+tree.getSelectedItemId()+"&comment="+timeVar;
		hp.postData(pre + 'deleteComment.php', post, proceedDeleteComment, true);
	}
setCurrFunc("");
}

// proceed action based on timestamp
function proceedDeleteComment(req) {
setCurrFunc("proceedDeleteComment");
	if (req.readyState == 4)	{
		if (req.status == 200)	{
			isEval=req.responseText;
			newEval(req.responseText);
			isEval="";
		}
	}
setCurrFunc("");
}
// sort node
function sortNode(treeItemId) {
setCurrFunc("sortNode");
	savingXML=true;
	working(true);
	canWriteXML="NO";
	treeLoaded=false;
	checkWriteXML(treeItemId);
	proceedSortNode(treeItemId);
setCurrFunc("");
}

function proceedSortNode(treeItemId) {
setCurrFunc("proceedSortNode");
	if (treeLoaded && (canWriteXML=="YES")) {
		tree.sortTree(treeItemId,'ASC',0);
		userDataWritten=true;
		saveXMLTree();
	} else {
		setTimeout("proceedSortNode('"+treeItemId+"')",defaultTime);
	}
setCurrFunc("");
}


// ==================
// FILE I/O FUNCTIONS
// ==================

function changeSelectedItemId(id) {
setCurrFunc("changeSelectedItemId");
	tree.changeItemId(tree.getSelectedItemId(),id);
setCurrFunc("");
}

// save xml tree
var canWriteXML="NO";

function clearItemChange() {
setCurrFunc("clearItemChange");
	itemChange['selectedId']=0;
	itemChange['newItemId']=-1;
	itemChange['newItemLabel']="";
setCurrFunc("");
}

var savingXML=false;

function saveXMLTree() {
setCurrFunc("saveXMLTree");
	if (userDataWritten) {
		var hp = new HTTPPost();
		var xmlTree = "string=" + encodeURIComponent(tree.serializeTree());
		if (ajaxFolder == false) var pre = "";
		else var pre = "ajax/";
		hp.postData(pre + 'writeXML.php', xmlTree, checkWriteXMLerrors, true);
		notworking();
		canWriteXML="NO";
		closeMessageBox();
		writeChangestamp();
	} else {
		setTimeout("saveXMLTree()",defaultTime);
	}
setCurrFunc("");
}

function checkWriteXMLerrors(req) {
setCurrFunc("checkWriteXMLerrors");
	if (req.readyState == 4)	{
		if (req.status == 200 && req.responseXML && req.responseXML.documentElement)	{
			var error = getXMLData(req.responseXML.documentElement.getElementsByTagName('error'));
			if (error!="") displaySystemMessage(error,true);
		}
	}
setCurrFunc("");
}

//check if menu.xml is locked (if other user is writing to it)

function checkWriteXML(itemId) {
setCurrFunc("checkWriteXML");
	savingXML=true;
	if (canWriteXML!="YES") {
		var hp = new HTTPPost();
		if (ajaxFolder == false) var pre = "";
		else var pre = "ajax/";
		hp.postData(rootURL + "ajax/" + 'canWriteXML.php', 'itemId='+itemId, setWriteXML, true);
	}
setCurrFunc("");
}

function setWriteXML(req) {
setCurrFunc("setWriteXML");
	if (req.readyState == 4)	{
		if (req.status == 200 && req.responseText)	{
			tmp=req.responseText.split("|");
			canWriteXML=tmp[0];
			if (canWriteXML=="YES") {
				lockXML();
				reloadTreeToWrite(tmp[1]);
			} else {
				displaySystemMessage(tmp[2]);
				checkWriteXML(tmp[1]);
			}
		}
	}
setCurrFunc("");
}
 
function lockXML() {
setCurrFunc("lockXML");
	var hp = new HTTPPost();
	if (ajaxFolder == false) var pre = "";
	else var pre = "ajax/";
	hp.postData(pre + 'lockXML.php', '', nofunction, true);
setCurrFunc("");
}

function unlockXML() {
setCurrFunc("unlockXML");
	var hp = new HTTPPost();
	if (ajaxFolder == false) var pre = "";
	else var pre = "ajax/";
	hp.postData(pre + 'unlockXML.php', '', nofunction, true);
setCurrFunc("");
}
// read change timestamp
var checkingXML=false;
var menuMD5="";
var xmlIsChanged=true;

function xmlChanged(){
setCurrFunc("xmlChanged");
	checkingXML=true;
	var hp = new HTTPPost();
	if (ajaxFolder == false) var pre = "";
	else var pre = "ajax/";
	hp.postData(pre + 'xmlchanged.php', '', proceedXmlChanged, true);
setCurrFunc("");
}

function proceedXmlChanged(req) {
setCurrFunc("proceedXmlChanged");
	if (req.readyState == 4)	{
		if (req.status == 200 && req.responseXML && req.responseXML.documentElement)	{
			var tmp = getXMLData(req.responseXML.documentElement.getElementsByTagName('changed'));
			if (tmp==menuMD5) {
				xmlIsChanged=false;
			} else {
				xmlIsChanged=true;
				menuMD5=tmp;
			}
			if (treeLoadedData!=tree.serializeTree()) {
				treeLoadedData=tree.serializeTree();
				xmlIsChanged=true;
			}
		}
	}
	checkingXML=false;
setCurrFunc("");
}

// switch page
function switchPage(pageID,mode) {
setCurrFunc("switchPage");
	moduleRemoveEvents();
	var hp = new HTTPPost();
	var param = 'pageID=' + pageID;
	param+="&perms="+getPerms(pageID);
	param+="&groups="+getULGroups(pageID);
	if (ajaxFolder == false) var pre = "";
	else var pre = "ajax/";
	if (mode == 'view')	hp.postData(pre + 'callPage.php',param, displayPage, true);
	else if (mode == 'form') hp.postData(pre + 'callForm.php',param, displayForm, true);
setCurrFunc("");
}

var editingPage=false;
var moduleOpen=false;
// load page
function trackGA(pageID) {
	if (typeof(allPages[pageID])!="undefined") {
		try {
			pageTracker._trackPageview(allPages[pageID]);
		} catch(e) {
			try {
				urchinTracker(allPages[pageID]);
			} catch(e) {}
		}
	} else {
		setTimeout("trackGA('"+pageID+"')",defaultTime);
	}
}

function getPage(pageID) {
setCurrFunc("getPage");
	moduleRemoveEvents();
	if (moduleOpen && editingPage) return;
	if (moduleSubmitted) {
		editPage(pageID);
	} else {
		var perms=getPerms(pageID);
		if ((perms&P_READ)!=0) {
			beforeDropPage=pageID;
			working(true);
			toggleTextLinks(pageID);
			//updateSuperadminState(pageID,tree.getUserData(pageID,'sa'));	// telepark.wiki pro
			readChangestamp();
			var hp = new HTTPPost();
			var id = 'pageID=' + pageID;
			id+="&perms="+getPerms(pageID);
			if (ajaxFolder == false) var pre = "";
			else var pre = "ajax/";
			hp.postData(pre + 'callPage.php?r=' + Math.random(), id, displayPage, true);
		} else {
			getPage("wiki");
		}
	}
setCurrFunc("");
}

var pageInner="";

// display page
function displayPage(req) {
setCurrFunc("displayPage");
	if (req.readyState == 4)	{
		if (req.status == 200 && req.responseText)	{
			pageInner=req.responseText;
			moduleRemoveEvents();
			setTimeout("putContent()",defaultTime);
		}
	}
setCurrFunc("");
}

function putContent() {
setCurrFunc("putContent");
	if (!clearingHead) {
		if (document.getElementById('content')) {
			isEval=pageInner;
			newEval(pageInner);
			pageInner="";
			isEval="";
				pageLoaded=true;
				ismenucalled = false;
				notworking(true);
				if (isGAOverlay) showGAOverlay(beforeDropPage);
			setTimeout("fSubs()",defaultTime);
		}
	} else {
		setTimeout("putContent()",defaultTime);
	}
setCurrFunc("");
}

// log error
function logError(err) {
setCurrFunc("logError");
	var hp = new HTTPPost();
	var err = 'error=' + err;
	hp.postData('ajax/logError.php', err, nofunction, true);
}


// ==============
// FORM FUNCTIONS
// ==============

// add page (add form)
function addPage() {
setCurrFunc("addPage");
	//readChangestamp();
	var hp = new HTTPPost();
	var id = 'pageID=' + newItemId;
	id+="&perms="+getPerms(tree.getParentId(newItemId));
	id+="&groups="+getULGroups(tree.getParentId(newItemId));
	hp.postData('ajax/callForm.php?r=' + Math.random(), id, displayForm, false);
setCurrFunc("");
}

var loadingEditor=false;

function addPageWait(repeat) {
setCurrFunc("addPageWait");
	if (typeof(repeat)=="undefined") moduleRemoveEvents();
	if (pageLoaded && !clearingHead) {
		loadingEditor=false;
		if (ismenucalled==false) setTimeout("addPage()",defaultTime*10);
	} else {
		loadingEditor=true;
		setTimeout("addPageWait('repeat')",defaultTime);
	}
setCurrFunc("");
}
// edit page (edit form)
var moduleSubmitted=false;

function editPage(treeItemId) {
setCurrFunc("editPage");
	editingPage=true;
	moduleRemoveEvents();
	var hp = new HTTPPost();
	var id = 'pageID=' + treeItemId;
	id+="&perms="+getPerms(treeItemId);
	id+="&groups="+getULGroups(treeItemId);
	hp.postData('ajax/callForm.php?r=' + Math.random(), id, displayForm, false);
setCurrFunc("");
}

// display form
function displayForm(req) {
setCurrFunc("displayForm");
	if (req.readyState == 4)	{
		if (req.status == 200 && req.responseText)	{
			pageInner=req.responseText;
			moduleRemoveEvents();
			setTimeout("putContent2()",defaultTime);
		}
	}
setCurrFunc("");
}

function putContent2() {
setCurrFunc("putContent2");
	try {
		isEval=pageInner;
		newEval(pageInner);
		isEval="";
		moduleSubmitted=false;
		setTimeout("fSubs()",defaultTime);
	} catch(e) {
		setTimeout("putContent3()",defaultTime);
	}
setCurrFunc("");
}

function putContent3() {
setCurrFunc("putContent3");
			isEval=pageInner;
			newEval(pageInner);
			isEval="";
			setTimeout("fSubs()",defaultTime);
setCurrFunc("");
}


// =========
// FCKEDITOR
// =========

// embedd FCKEditor
function embedEditor(nr) {
setCurrFunc("embedEditor");
	if (moduleOpen) return false;
    if (!document.getElementById('wikiContent') && nr<5) {
    	logError("The editor couldn't be initialized (attempt " + nr + " of 5).");
    	embedEditor(parseInt(nr)+1);
    }
    if (!document.getElementById('wikiContent') && nr>=5) {
    	displaySystemMessage("The editor couldn't be initialized. Please reload the website and try again.");
    	logError("The editor couldn't be initialized after 5 attempts.");
    }
	var oFCKeditor = new FCKeditor( 'wikiContent' ) ;
    oFCKeditor.BasePath = "FCKeditor/" ;
    oFCKeditor.Width = visualEditorWidth;
    oFCKeditor.Height = visualEditorHeight;
    oFCKeditor.ReplaceTextarea() ;
setCurrFunc("");
}

// after FCKEditor is loaded
function FCKeditor_OnComplete( editorInstance ) {
setCurrFunc("FCKEditor_ONComplete");
    document.getElementById('wikiMenuLabel').select();
    status();
setCurrFunc("");
}

// check if changes have been made
function checkEditorChanges(originalLabel,originalCheckboxState) {
setCurrFunc("checkEditorChanges");
	if (document.getElementById('continueEdit')) document.getElementById('continueEdit').value=""; 
	ieCrashFix();
	unLockFile(tree.getSelectedItemId());							// telepark.wiki pro	if (typeof(FCKeditorAPI)!="undefined") {
		var oEditor = FCKeditorAPI.GetInstance('wikiContent') ;
		if (!oEditor) return true;
		// changes		// if (oEditor.IsDirty() || (originalLabel != document.getElementById('wikiMenuLabel').value)) {		var wF=false;
		var _comm=document.getElementById('wikiComment');
		if (_comm) _comm=_comm.value;
		var _file=document.getElementById('wikiFileName');
		if (_file) _file=_file.value;
		if (document.getElementById('wikiFile')) wF=document.getElementById('wikiFile').value;
		if (oEditor.IsDirty() || (originalLabel != document.getElementById('wikiMenuLabel').value) || (document.getElementById('wikiSuperadminPage') && originalCheckboxState != document.getElementById('wikiSuperadminPage').checked) || _comm || _file || wF) {			// telepark.wiki pro
setCurrFunc("");
			return true;
		}
		// no changes
		else {
			getPage(tree.getSelectedItemId());
setCurrFunc("");
			return false;
		}
	} else {
setCurrFunc("");
		return true;
	}
setCurrFunc("");
}

function ieCrashFix() {
setCurrFunc("ieCrashFIx");
	if (ie) {
		if (typeof(FCKeditorAPI)!="undefined") {
			var oEditor = FCKeditorAPI.GetInstance('wikiContent') ;
			if (oEditor) {
				if (oEditor.Selection.GetSelectedElement()) {
					if (oEditor.Selection.GetType()=="Control") {
						oEditor.Selection.SelectNode(oEditor.Selection.GetSelectedElement().parentNode.parentNode);
					}
				}
			}
		}
	}
setCurrFunc("");
}

// ===============
// LOGIN FUNCTIONS
// ===============

// login box
function loginBox() {
setCurrFunc("loginBox");
	closeMessageBox();
	document.getElementById('loginBox').style.display = 'block';
	document.getElementById('loginBoxName').value = '';
	document.getElementById('loginBoxPass').value = '';
	document.getElementById('loginBoxName').focus();
setCurrFunc("");
}

// hide login box
function hideLoginBox() {
setCurrFunc("hideLoginBox");
	document.getElementById('loginBox').style.display = 'none';
	document.getElementById('loginBoxName').value = '';
	document.getElementById('loginBoxPass').value = '';
setCurrFunc("");
}

// submit login
function submitLogin() {
setCurrFunc("submitLogin");
	var name = document.getElementById('loginBoxName').value;
	var password = document.getElementById('loginBoxPass').value;
	var remember = (document.getElementById('loginRemember').checked?"1":"0");
	hideLoginBox();
	if (password != '') {
		post = "username="+name+"&pass=" + password + "&remember=" + remember;
		var hp = new HTTPPost();
		hp.postData('ajax/validateLogin.php', post, validateLogin, true);
	}
setCurrFunc("");
}

// check login
function checkLogin(isLoggedOut) {
setCurrFunc("checkLogin");
	status();
	var post="";
	if (isLoggedOut) post="loggedout=1";
	var hp = new HTTPPost();
	hp.postData('ajax/checkLogin.php', post, login, true);
setCurrFunc("");
}

// login
var firstload=true;

function login(req) {
setCurrFunc("login");
	//alert(req.readyState);
	if (req.readyState == 4)	{
		//alert(req.status);
		if (req.status == 200 && req.responseXML && req.responseXML.documentElement)	{
			var res = getXMLData(req.responseXML.documentElement.getElementsByTagName('checklogin'));
			var lev = getXMLData(req.responseXML.documentElement.getElementsByTagName('loginlevel'));
			var login_str = getXMLData(req.responseXML.documentElement.getElementsByTagName('login_str'));
			var login_fct = getXMLData(req.responseXML.documentElement.getElementsByTagName('login_fct'));
			var pageids = getXMLData(req.responseXML.documentElement.getElementsByTagName('pageids'));
			var groups = getXMLData(req.responseXML.documentElement.getElementsByTagName('uploadgroups'));
			homepage = getXMLData(req.responseXML.documentElement.getElementsByTagName('homepage'));
			var err = getXMLData(req.responseXML.documentElement.getElementsByTagName('error'));
			// set permissions
			clearPermissions();
			//alert(pageids.replace(/\|/g,"\n"));
			pageids=pageids.split("|");
			for (var i=0; i<pageids.length; i++) {
				var tmp=pageids[i].split(":");
				permissions[tmp[0]]=parseInt(tmp[1]);
			}

			if (groups!="") {
				groups=groups.split("|");
				for (var i=0; i<groups.length; i++) {
					var tmp=groups[i].split(":");
					uploadgroups[tmp[0]]=tmp[1];				
				}
				uploadenabled=true;
			}

			if (err != "") logError(err);
			// wrong password
			if (res == '') {
				loggedIn = false;
				if (!firstload) loginBox();
			}
			// correct password
			else {
				// user level
				if (lev == 1) {				// telepark.wiki pro
					superadmin = true;
				}
				else {
					superadmin = false;
				}
				// logged in
				loggedIn = true;
				// login link
				if (document.getElementById('loginButton')) {
					document.getElementById('loginButton').innerHTML = '<a href="#" onClick="' + login_fct + '">' + login_str + '</a>';
				}
			}
			//toggleTextLinks();
			permsloaded=true;
			if (firstload) loadTree();
			firstload=false;
			status();
		}
	}
setCurrFunc("");
}

// validate login data
function validateLogin(req) {
setCurrFunc("validateLogin");
	if (req.readyState == 4)	{
		if (req.status == 200 && req.responseXML && req.responseXML.documentElement)	{
			var res = getXMLData(req.responseXML.documentElement.getElementsByTagName('validatelogin'));
			var lev = getXMLData(req.responseXML.documentElement.getElementsByTagName('loginlevel'));
			var login_str = getXMLData(req.responseXML.documentElement.getElementsByTagName('login_str'));
			var login_fct = getXMLData(req.responseXML.documentElement.getElementsByTagName('login_fct'));
			var pageids = getXMLData(req.responseXML.documentElement.getElementsByTagName('pageids'));
			var groups = getXMLData(req.responseXML.documentElement.getElementsByTagName('uploadgroups'));
			homepage = getXMLData(req.responseXML.documentElement.getElementsByTagName('homepage'));
			var err = getXMLData(req.responseXML.documentElement.getElementsByTagName('error'));
			// set permissions
			clearPermissions();
			pageids=pageids.split("|");
			for (var i=0; i<pageids.length; i++) {
				var tmp=pageids[i].split(":");
				permissions[tmp[0]]=parseInt(tmp[1]);				
			}

			if (groups!="") {
				groups=groups.split("|");
				for (var i=0; i<groups.length; i++) {
					var tmp=groups[i].split(":");
					uploadgroups[tmp[0]]=tmp[1];				
				}
				uploadenabled=true;
			}

			if (err != "") logError(err);
			// correct password
			if (res != "") {
				// login message
				displaySystemMessage(str_loggedin);
				// user level
				if (lev == 1) {			// telepark.wiki pro
					superadmin = true;
				}
				else {
					superadmin = false;
				}
				// logged in
				loggedIn = true;
				// login link
				if (document.getElementById('loginButton')) {
					document.getElementById('loginButton').innerHTML = '<a href="#" onClick="' + login_fct + '">' + login_str + '</a>';
				}
				var item="wiki";
				if (homepage!="") item=homepage;
				xmlIsChanged=true;
				reloadTreeStep2(item);
			}
			// wrong password
			else {
				loggedIn = false;
				superadmin = false;		// telepark.wiki pro
				//checkLogin();
			}
			//toggleTextLinks();
		}
	}
	status();
setCurrFunc("");
}

// display or hide text links
function toggleTextLinks(itemId) {
setCurrFunc("toggleTextLinks");
	if (textLinks == true && document.getElementById('textlinks')) {
		var saStyle="none";
		if (superadmin) saStyle="inline";
		document.getElementById('changePassLink').style.display="none";			
		document.getElementById('settingsLink').style.display=saStyle;			
		document.getElementById('privilegesLink').style.display=saStyle;
		document.getElementById('addLink').style.display=saStyle;			
		document.getElementById('editLink').style.display=saStyle;
		document.getElementById('deleteLink').style.display=saStyle;
		document.getElementById('sortLink').style.display=saStyle;
		document.getElementById('printPageSpan').style.display=saStyle;
		if (loggedIn && ((!superadmin) && (canchangepass=="YES"))) document.getElementById('changePassLink').style.display="inline";			
		if ((parseInt(permissions[itemId])&P_DRAGNDROP)!=0) document.getElementById('sortLink').style.display="inline";
		if (((parseInt(permissions[itemId])&P_ADD)!=0) && (tree.getLevel(itemId)<=maxLevels)) document.getElementById('addLink').style.display="inline";
		if ((parseInt(permissions[itemId])&P_EDIT)!=0) document.getElementById('editLink').style.display="inline";
		if ((parseInt(permissions[itemId])&P_DELETE)!=0) document.getElementById('deleteLink').style.display="inline";
		if ((parseInt(permissions[itemId])&P_READ)!=0) document.getElementById('printPageSpan').style.display="inline";
		document.getElementById('textlinks').style.display = 'block';
	}
setCurrFunc("");
}

// logout
function logout() {
setCurrFunc("logout");
	working(true);
	var c = confirm(str_asklogout);
	if (c == true) {
		var hp = new HTTPPost();
		hp.postData('ajax/logout.php', '', setLogout, true);
	}
	ismenucalled = false;
setCurrFunc("");
}

// set logout
function setLogout(req) {
setCurrFunc("setLogout");
	if (req.readyState == 4)	{
		if (req.status == 200 && req.responseXML && req.responseXML.documentElement)	{
			var login_str = getXMLData(req.responseXML.documentElement.getElementsByTagName('login_str'));
			var login_fct = getXMLData(req.responseXML.documentElement.getElementsByTagName('login_fct'));
			var pageids = getXMLData(req.responseXML.documentElement.getElementsByTagName('pageids'));
			var groups = getXMLData(req.responseXML.documentElement.getElementsByTagName('uploadgroups'));
			var err = getXMLData(req.responseXML.documentElement.getElementsByTagName('error'));
			homepage="";
			// set permissions
			clearPermissions();
			pageids=pageids.split("|");
			for (var i=0; i<pageids.length; i++) {
				var tmp=pageids[i].split(":");
				permissions[tmp[0]]=parseInt(tmp[1]);				
			}

			groups=groups.split("|");
			for (var i=0; i<groups.length; i++) {
				var tmp=groups[i].split(":");
				uploadgroups[tmp[0]]=tmp[1];				
			}

			if (err != "") logError(err);
			if (err == "") {
				loggedIn = false;
				superadmin = false;		// telepark.wiki pro
				if (document.getElementById('loginButton')) {
					document.getElementById('loginButton').innerHTML = '<a href="#" onClick="' + login_fct + '">' + login_str + '</a>';
				}
				displaySystemMessage(str_loggedout);
				xmlIsChanged=true;
				reloadTreeStep2('wiki');
			}
		}
	}
	status();
setCurrFunc("");
}


// ==================
// NOTIFICATION EMAIL
// ==================

// submit sign email				// telepark.wiki pro
function submitSignEmail() {
setCurrFunc("submitSignEmail");
	if (document.getElementById('signEmail') && document.getElementById('signEmail').value!="") {
		var email = "email=" + document.getElementById('signEmail').value;
		var hp = new HTTPPost();
		hp.postData('ajax/signEmail.php', email, signEmailResult, true);
	}
setCurrFunc("");
}
	
// display sign email result		// telepark.wiki pro
function signEmailResult(req) {
setCurrFunc("signEmailResult");
	if (req.readyState == 4)	{
		if (req.status == 200 && req.responseXML && req.responseXML.documentElement)	{
			var res = getXMLData(req.responseXML.documentElement.getElementsByTagName('success'));
			var err = getXMLData(req.responseXML.documentElement.getElementsByTagName('error'));
			if (err != "") logError(err);
			if (res != "") {
				displaySystemMessage(res);
			}
			else {
				displaySystemMessage(err);
			}
		}
	}
	document.getElementById('signEmail').value = "";
	status();
setCurrFunc("");
}

// send notification email			// telepark.wiki pro
function sendNotification() {
setCurrFunc("sendNotification");
	var hp = new HTTPPost();
	hp.postData('ajax/sendEmail.php', '', sendEmailResult, true);
setCurrFunc("");
}

// display send email result		// telepark.wiki pro
function sendEmailResult(req) {
setCurrFunc("sendEmailResult");
	if (req.readyState == 4)	{
		if (req.status == 200 && req.responseXML && req.responseXML.documentElement)	{
			var err = getXMLData(req.responseXML.documentElement.getElementsByTagName('error'));
			if (err != "") logError(err);
		}
	}
setCurrFunc("");
}


// ======
// SEARCH
// ======

// check search field before submit			// telepark.wiki pro
function checkSearchField() {
setCurrFunc("checkSearchField");
	if (document.getElementById('search') && document.getElementById('search').value != '') {
setCurrFunc("");
		return true;
	}
	else {
setCurrFunc("");
		return false;
	}
setCurrFunc("");
}

// ============
// UNLOCK PAGES
// ============

// unlock page file					// telepark.wiki pro
function unLockFile(pageID) {
setCurrFunc("unLockFile");
	if (pageID==-1) return;
	var hp = new HTTPPost();
	param = "pageID=" + pageID;
	hp.postData('ajax/unLockFile.php', param, unLockFileResult, true);
setCurrFunc("");
}

// check lock files					// telepark.wiki pro
function checkLockFiles() {
setCurrFunc("checkLockFiles");
	var hp = new HTTPPost();
	hp.postData('ajax/checkLockFiles.php', '', nofunction, false);
setCurrFunc("");
}


// unlock file result				// telepark.wiki pro
function unLockFileResult(req) {
setCurrFunc("unLockFileResult");
	if (req.readyState == 4)	{
		if (req.status == 200 && req.responseXML && req.responseXML.documentElement)	{
			var err = getXMLData(req.responseXML.documentElement.getElementsByTagName('error'));
			if (err != "") logError(err);
		}
	}
setCurrFunc("");
}

// ============
// PRINT PAGE
// ============
function printPage() {
setCurrFunc("printPage");
	var treeItemId=tree.getSelectedItemId();
	var perms=getPerms(treeItemId);
	var hp = new HTTPPost();
	hp.postData('ajax/setcommperms.php', 'pageID='+treeItemId+"&perms="+perms, proceedPrintPage, true);
	ismenucalled = false;
setCurrFunc("");
}

function proceedPrintPage(req) {
setCurrFunc("proceedPrintPage");
	if (req.readyState == 4)	{
		if (req.status == 200 && req.responseXML && req.responseXML.documentElement)	{
			var pageID = getXMLData(req.responseXML.documentElement.getElementsByTagName('pageid'));
			if (pageID!="") {
				window.open("printPage.php?pageID="+pageID,"PrintPage");			
			}
		}
	}
setCurrFunc("");
}

// ============
// CHANGE USER PASSWORD
// ============
function changePassword(userid) {
setCurrFunc("changePassword");
	ismenucalled=false;
	var hp = new HTTPPost();
	if (ajaxFolder == false) var pre = "";
	else var pre = "ajax/";
	hp.postData(pre + 'changePassword.php', 'userid='+userid, proceedChangePassword, true);
setCurrFunc("");
}

function proceedChangePassword(req) {
setCurrFunc("proceedChangePassword");
	if (req.readyState == 4)	{
		if (req.status == 200) {
			document.getElementById('actionsBoxHead').innerHTML=str_CHANGE_PASSWORD;
			document.getElementById('actionsBoxInner').innerHTML=req.responseText;
			document.getElementById('actionsBox').style.display="block";
		}
	}
setCurrFunc("");
}

function changePassSubmit() {
setCurrFunc("changePassSubmit");
	var obj=document.getElementById('passForm');
	if (obj) {
		var newPass=document.getElementById('userNewPassword').value;
		if (newPass!="") {
			if (newPass!=obj.retypeNewPassword.value) {
				alert(str_passwords_dont_match);
			} else {
				var hp = new HTTPPost();
				if (ajaxFolder == false) var pre = "";
				else var pre = "ajax/";
				hp.postData(pre + 'changePassSubmit.php', 'userid='+obj.userid.value+"&newpass="+newPass, proceedChangePassSubmit, true);
			}
		}
	}
setCurrFunc("");
}

function proceedChangePassSubmit(req) {
setCurrFunc("proceedChangePassSubmit");
	if (req.readyState == 4)	{
		if (req.status == 200) {
			document.getElementById('actionsBoxHead').innerHTML=str_change_pass;
			document.getElementById('actionsBoxInner').innerHTML=req.responseText;
			setTimeout("document.getElementById('actionsBox').style.display='none'",5000);
		}
	}
setCurrFunc("");
}

function closeActionsBox() {
setCurrFunc("closeActionsBox");
	document.getElementById('actionsBox').style.display="none";
	document.getElementById('actionsBoxInner').innerHTML="";
setCurrFunc("");
}

function clearPermissions() {
setCurrFunc("clearPermissions");
	for (var i in permissions) {
		delete permissions[i];
	}
	for (var i in uploadgroups) {
		delete uploadgroups[i];
	}
	uploadenabled=false;
setCurrFunc("");
}

function getPerms(itemId) {
setCurrFunc("getPerms");
	if (superadmin) return 65535;
	if (itemId==0) return permissions['wiki'];
	var undfnd=new Array;
	while (typeof(permissions[itemId])=="undefined") {
		undfnd[undfnd.length]=itemId;
		itemId=tree.getParentId(itemId);
	}
	for (var i=0; i<undfnd.length; i++) {
		permissions[undfnd[i]]=permissions[itemId];
	}
setCurrFunc("");
	return permissions[itemId];
}

function getULGroups(itemId) {
setCurrFunc("getULGroups");
	var addSA="";
	if (superadmin) addSA="superadmin,";
	if (!uploadenabled) return "";
	if (itemId==0) {
		uploadgroups['wiki']=addSA+uploadgroups['wiki'];
		return uploadgroups['wiki'];
	}
	var undfnd=new Array;
	while (typeof(uploadgroups[itemId])=="undefined") {
		undfnd[undfnd.length]=itemId;
		if (itemId=="wiki") break;
		itemId=tree.getParentId(itemId);
	}
	if (typeof(uploadgroups[itemId])=="undefined") {
		if (!superadmin) {
			return "";
		} else {
			return "superadmin";
		}
	} else {
		uploadgroups[itemId]=addSA+uploadgroups[itemId];
	}
	for (var i=0; i<undfnd.length; i++) {
		uploadgroups[undfnd[i]]=uploadgroups[itemId];
	}
setCurrFunc("");
	return uploadgroups[itemId];
}

// MODULE FUNCTIONS

function submitModuleData(exitEditMode) {
setCurrFunc("submitModuleData");
	var obj=document.wikiForm;
	if (obj) {
		if (exitEditMode) {
			editingPage=false;
			checkEditorChanges(document.getElementById('wikiMenuLabelOrig').value,document.getElementById('wikiSuperadminPageOrig').value);
		}
		obj.submit();
	}
setCurrFunc("");
}

var IEhead=new Array;
var clearingHead=false;

function clearIEHead() {
	retryCount=0;
	var old="";
	moduleInit="";
setCurrFunc("clearIEHead");
	var headTags = document.getElementsByTagName("head");
	var headID = headTags[0];
	for (var i1=0; i1<headID.childNodes.length; i1++) {
		if (headID.childNodes[i1].src) {
			for (var i=0; i<IEhead.length; i++) {
				if (IEhead[i].src==headID.childNodes[i1].src) {
					old=headID.removeChild(headID.childNodes[i1]);
				}
			}
		}
	}
	var links = document.getElementsByTagName("link");
	for (var i=0; i<links.length; i++) {
		if (links[i].id) {
			if (links[i].id.indexOf("inStyle")!=-1) {
				old=headID.removeChild(links[i]);
			}
		}
	} 
	var obj=document.getElementById('script000');
	if (obj) {
		old=headID.removeChild(obj);
	}
	for (var i=0; i<IEhead.length; i++) {
		delete IEhead[i];
	}
	IEhead.length=0;
	for (var i=0; i<dynCSS.length; i++) {
		delete dynCSS[i];
	}
	dynCSS.length=0;
setCurrFunc("");
	window.setTimeout=newTimeout;
	window.setInterval=newInterval;
	clearingHead=false;
}

function appendJStoHead() {
	var headTags = document.getElementsByTagName("head");
	var headID = headTags[0];
	for (var i=1; i<IEhead.length; i++) {
		headID.appendChild(IEhead[i]);
	}
}

function ieLoadHeadScripts() {
	if (clearingHead) {
		setTimeout("ieLoadHeadScripts()",20);
		return false;
	}
setCurrFunc("ieLoadHeadScripts");
	if (!(IEhead.length>0)) return;
	var countS=1;
	var rs="";
	for (var i=1; i<IEhead.length; i++) {
		rs=IEhead[i].readyState;
		if ((rs=="complete") || (rs=="loaded")) countS++;
	}
	if (countS==IEhead.length) {
		setTimeout("scriptsExecution()",1);
	} else {
		setTimeout("ieLoadHeadScripts()",30);
	}
setCurrFunc("");
}

function scriptLoaded() {
	if (scriptAllCount==scriptCount+1) {
		scriptsExecution();
	} else {
		scriptCount++;
	}
}

var scriptsText="";
var maxRetry=10;
var retryCount=0;
var scriptSrcs=new Array;

function in_array(val,ar) {	
	var ret=false;	
	for (var i in ar) {
		if (ar[i]==val) {
			ret=true;
			break;
		}
	}
	return ret;
}

function scriptInMemory(scrsrc) {
	var ret=false;
	var headTags = document.getElementsByTagName("head");
	var headID = headTags[0];
	for (var i1=0; i1<headID.childNodes.length; i1++) {
		if (headID.childNodes[i1].src) {
			if (headID.childNodes[i1].src==scrsrc) {
				ret=true;
				break;
			}
		}
	}
	return ret;
}

function scriptsExecution() {
setCurrFunc("scriptExecution");
	if (clearingHead || stylesLoadProgress) {
		setTimeout("scriptsExecution()",20);
		return false;
	}
try {
	if (!(IEhead.length>0)) return;
	var headTags = document.getElementsByTagName("head");
	var headID = headTags[0];
	if (IEhead[0]) headID.appendChild(IEhead[0]);
	pageLoadProgress=false;
	notworking(true);
	closeMessageBox();
} catch(e) {
	displaySystemMessage("Page not loaded. Retrying: "+retryCount+"/"+maxRetry,true);
	if (retryCount<maxRetry) {
		setTimeout("scriptsExecution()",reloadTimeout*1000);
		retryCount++;
	} else {
		if (retryCount==maxRetry) {
			displaySystemMessage("Page not loaded in "+(reloadTimeout*maxRetry)+" seconds. Reloading whole page.");
			retryCount++;
			getPage(tree.getSelectedItemId());
		} else {
			displaySystemMessage("Page not loaded in "+(reloadTimeout*maxRetry)+" seconds. Try manual reload.");
		}
	}
}
setCurrFunc("");
}

var moduleInit="";

function moduleInitRefresh() {
setCurrFunc("moduleInitRefresh");
	notworking(true);
	if (typeof(moduleInit)=="function") {
		moduleInit();
	}
setCurrFunc("");
}

var moduleEvents=new Array;

function moduleAddEvent(obj, evType, fn) {
setCurrFunc("moduleAddEvent");
	var l=moduleEvents.length;
	moduleEvents[l]=new Array;
	moduleEvents[l]['obj']=obj;
	moduleEvents[l]['type']=evType;
	moduleEvents[l]['fn']=fn;
	addEvent(obj, evType, fn);
setCurrFunc("");
}

function noTimeout(code,time) {
	return 0;
}

function noInterval(code,time) {
	return 0;
}

function moduleRemoveEvents() {
	if (loadingEditor) return;
setCurrFunc("moduleRemoveEvents");
	clearingHead=true;
	scriptCount=9999;
	window.setTimeout=noTimeout;
	window.setInterval=noInterval;
	for (var i=0; i<toutIDs.length; i++) {
		clearTimeout(toutIDs[i]);
		delete toutIDs[i];
	}
	toutIDs.length=0;
	for (var i=0; i<intIDs.length; i++) {
		clearTimeout(intIDs[i]);
		delete intIDs[i];
	}
	intIDs.length=0;
	for (var i=0; i<moduleEvents.length; i++) {
		removeEvent(moduleEvents[i]['obj'],moduleEvents[i]['type'],moduleEvents[i]['fn']);
		delete moduleEvents[i];
	}
	moduleEvents.length=0;
	clearIEHead();
setCurrFunc("");
} 

var dynCSS=new Array;
var countCSS=0;

function addDynStyles() {
	if (clearingHead) {
		setTimeout("addDynStyles()",20);
		return false;
	}
setCurrFunc("addDynStyles");
	var headTags = document.getElementsByTagName("head");
	var headID = headTags[0];
	for (var i=0; i<dynCSS.length; i++) {
		headID.appendChild(dynCSS[i]);
	}
	countCSS=dynCSS.length;
	cssOnload();
setCurrFunc("");
}

function cssOnload() {
setCurrFunc("cssOnload");
	if (ie) {
		var tmpCount=countCSS;
		for (var i=0; i<countCSS; i++) {
			var obj=document.getElementById('styleTest'+i);
			if (obj) {
				var c=getColor(obj);
				c=c.toLowerCase();
				if (c=="#b44b4b") tmpCount--;
			}
		}
	} else {
		var tmpCount=0;
	}
	if (tmpCount==0) {
		closeMessageBox();
		stylesLoadProgress=false;
		appendJStoHead();
		moduleInitRefresh();
	} else {
		//displaySystemMessage("Loading module styles: "+(countCSS-tmpCount)+"/"+countCSS,true);
		setTimeout("cssOnload()",defaultTime);
	}
setCurrFunc("");
}

function newTimeout(code,interval) {
	var tmp=oldSetTimeout(code, interval);
	toutIDs[toutIDs.length]=tmp;
	return tmp;
}

function newInterval(code,interval) {
	var tmp=oldSetInterval(code, interval);
	intIDs[intIDs.length]=tmp;
	return tmp;
}

var oldSetTimeout=window.setTimeout;
var oldSetInterval=window.setInterval;
var oldEval=window.eval;

window.setTimeout=newTimeout;
window.setInterval=newInterval;

var evalData=new Array;
var retryEvalCount=new Array;
var countEvals=-1;

function newEval(data) {
	if (typeof(data)!="undefined") {
		countEvals++;	
		evalData[countEvals]=data;
		retryEvalCount[countEvals]=0;
		closeMessageBox();
	}
	try {
		oldEval(evalData[countEvals]);
		delete evalData[countEvals];
		countEvals--;
	} catch(e) {
		displaySystemMessage("Page not loaded. Retrying: "+retryEvalCount[countEvals]+"/"+maxRetry,true);
		if (retryEvalCount[countEvals]<maxRetry) {
			setTimeout("newEval()",reloadTimeout*1000);
			retryEvalCount[countEvals]++;
		} else {
			if (retryEvalCount[countEvals]==maxRetry) {
				displaySystemMessage("Page not loaded in "+(reloadTimeout*maxRetry)+" seconds. Reloading whole page.");
				retryEvalCount[countEvals]++;
				getPage(tree.getSelectedItemId());
			} else {
				displaySystemMessage("Page not loaded in "+(reloadTimeout*maxRetry)+" seconds. Try manual reload.");
			}
		}
	}
}

function fSubs() {
setCurrFunc("fSubs");
	var f=document.getElementsByTagName("form");
	for (var i=0; i<f.length; i++) {
		if (f[i].name!="login" && f[i].action!="ajax/submitSearch.php") {
			addEvent(f[i],"submit",fSub);
			f[i].newSubmit=f[i].submit;
			f[i].submit=fSubSub;
		}
	}
setCurrFunc("");
}

function fSub() {
setCurrFunc("fSub");
	setAllComments()
	return true;
setCurrFunc("");
}

function fSubSub() {
setCurrFunc("fSub");
	setAllComments()
	return this.newSubmit();
setCurrFunc("");
}

function setAllComments() {
setCurrFunc("setAllComments");
	var ins=document.getElementsByTagName('input');
	for (var i=0; i<ins.length; i++) {
		if (ins[i].name=="wikiComment1") ins[i].value=WIKI_PREFIX;
	}
setCurrFunc("");
}

var WIKI_PREFIX="";

function getPrefix(){
setCurrFunc("getPrefix");
	var hp = new HTTPPost();
	if (ajaxFolder == false) var pre = "";
	else var pre = "ajax/";
	hp.postData(pre + 'prefix.php', '', gotPrefix, true);
setCurrFunc("");
}

function gotPrefix(req) {
setCurrFunc("gotPrefix");
	if (req.readyState == 4)	{
		if (req.status == 200)	{
			WIKI_PREFIX=req.responseText;
		}
	}
setCurrFunc("");
}

function mouseButton(e) {
	var ret="left";
	if (!ie) {
		var b=e.which;
		if (b==1) ret="left";
		if (b==3) ret="right";
	} else {
		var b=event.button;
		if (b==1) ret="left";
		if (b==2) ret="right";
	}
   return ret;
}

function submitWikiForm() {
	var obj=document.getElementById('pageURL');
	if (obj.value=="") {
		GOsubmitWikiForm();
	} else {
		var data=new Array;
		data['url']=obj.value;
		data['pageID']=document.getElementById('pID').value;
		var hp = new HTTPPost();
		if (ajaxFolder == false) var pre = "";
		else var pre = "ajax/";
		hp.postData(pre + 'checkURL.php', data, checkURLExists, true);
	}
}

function checkURLExists(req) {
	if (req.readyState == 4)	{
		if (req.status == 200)	{
			if (req.responseText=="OK") {
				GOsubmitWikiForm();
			} else {
				document.getElementById('pageURLExists').style.display='block';
				var obj=document.getElementById('pageURL');
				obj.focus();
				obj.select();
				setTimeout("document.getElementById('pageURLExists').style.display='none'",4000);
			}
		}
	}
}


function GOsubmitWikiForm() {
	editingPage=false;
	if (checkEditorChanges(document.getElementById('wikiMenuLabelOrig').value,document.getElementById('wikiSuperadminPageOrig').value) || true) document.wikiForm.submit();
}

function titleChanged(obj) {
	if (document.getElementById('pageURL').value=="") {
		var url=obj.value;
		url=url.replace(/\./g,"-").replace(/\s/g,"-").replace(/&/g,"-and-").replace(/\//g,"").replace(/'/g,"").replace(/"/g,"").replace(/\?/g,"");
		document.getElementById('pageURL').value=url;
	}
}

function readCookie(n) {
var cookiecontent = "";
if(document.cookie.length > 0) {
	var cookiename = n+ '=';
	var cookiebegin = document.cookie.indexOf(cookiename);
	var cookieend = 0;
	if(cookiebegin > -1) {
		cookiebegin += cookiename.length;
		cookieend = document.cookie.indexOf(";",cookiebegin);
		if(cookieend < cookiebegin) { cookieend = document.cookie.length; }
		cookiecontent = document.cookie.substring(cookiebegin,cookieend);
		}
	}
return unescape(cookiecontent);
} 
