var hidetreeelements=new Object();

var bShowGlobalMinicalendar = true;

function addHideTreeNode(node,parent,index) {
	hidetreeelements[node.id]={ "node" : node , "parent" : parent };
	if(index) {
		hidetreeelements[node.id]["index"]=index;
	}
	try { parent.removeChild(node); } catch(e) {}
	
}
function appendNode(id,cd2) {
	var mynode =hidetreeelements[id];
	if(mynode) {
		if(!mynode.index) { 
			mynode.parent.appendChild(mynode.node);	
		} else {
			var nodeafter=null;
			for(var i=0;i<mynode.parent.childNodes.length;i++) {
				nodeafter=mynode.parent.childNodes[i];
				if(nodeafter.nodeType==1) {
					if(nodeafter.id) {
						if(hidetreeelements[nodeafter.id] && hidetreeelements[nodeafter.id].index) {
							if(mynode.index<=hidetreeelements[nodeafter.id].index) { break; }	
						} else { break; }
					} else { break; }
				}
			}
			mynode.parent.insertBefore(mynode.node,nodeafter);
		}
		if(!cd2 && (mynode.node.style.display=="none" || mynode.node.style.display=="NONE")) {
			if(mynode.node.tagName == "DIV") { mynode.node.style.display = "block"; }
			else { mynode.node.style.display = ""; }
		}
	} else if ($ALL(id)) {
		if(!cd2 && ($ALL(id).style.display=="none" || $ALL(id).style.display=="NONE")) {
			if($ALL(id).tagName == "DIV") { $ALL(id).style.display = "block"; }
			else { $ALL(id).style.display = ""; }
		}
	}
	refillImages(id);
}
function refillImages(id) {
	if($ALL(id)) {
		var elements=$ALL(id).getElementsByTagName("img");
		for(var i=0;i<elements.length;i++) {
			if(init.images[elements[i].id] && init.images[elements[i].id] != elements[i].src) {
				elements[i].src=init.images[elements[i].id];
			}
		}
	}
}
function removeNode(id,cd2) {
	var mynode =hidetreeelements[id];
	if(mynode) { 
		try {
			mynode.parent.removeChild(mynode.node);
			if(!cd2 && (mynode.node.style.display!="none" || mynode.node.style.display!="NONE")) {
				mynode.node.style.display = "none";
			}	
		} catch (e) {}
	} else if ($ALL(id)) {
		if(!cd2 && ($ALL(id).style.display!="none" || $ALL(id).style.display!="NONE")) {
			$ALL(id).style.display = "none"; 
		}
	}
}
function showNode(id,changedisplay) {
	appendNode(id,changedisplay);
}
function hideNode(id,changedisplay) {
	removeNode(id,changedisplay);
}
function rebuildTree() {
	addHideTreeNode($("everything"),$("testit3333"));
	addHideTreeNode($("portal"),$("contentarea"));
	if(configGetKey("modules.mail.module")) {
		addHideTreeNode($("mail.detail"),$("contentarea"));
		addHideTreeNode($("mail.list"),$("contentarea"));
		addHideTreeNode($("mail.hsplit"),$("contentarea"));
		addHideTreeNode($("mail.vsplit"),$("contentarea"));
	}
	if(configGetKey("modules.calendar.module")) {
		addHideTreeNode($("calendarTeamDay"),$("contentarea"));
		addHideTreeNode($("calendarTeamWeek"),$("contentarea"));
		addHideTreeNode($("calendarDay"),$("contentarea"));
		addHideTreeNode($("calendarWorkweek"),$("contentarea"));
		addHideTreeNode($("calendarWeek"),$("contentarea"));
		addHideTreeNode($("calendarMonth"),$("contentarea"));
		addHideTreeNode($("calendarAppointmentDetail"),$("contentarea"));
		addHideTreeNode($("calendarList"),$("contentarea"));
	}
	if(bShowGlobalMinicalendar)
		addHideTreeNode($("calendarMini"),$("below_folders"));
	if(configGetKey("modules.contacts.module")) {
		addHideTreeNode($("contacts"),$("contentarea"));
		addHideTreeNode($("contactCards"),$("contentarea"));
		addHideTreeNode($("contactsList"),$("contentarea"));
		addHideTreeNode($("contactDetails"),$("contentarea"));
	}
	if(configGetKey("modules.infostore.module")) {
		addHideTreeNode($("infostore_list"),$("contentarea"));
		addHideTreeNode($("infostore_split"),$("contentarea"));
		addHideTreeNode($("infostore_detail"),$("contentarea"));
	}
	if(configGetKey("modules.tasks.module")) {
		addHideTreeNode($("taskslist"),$("contentarea"));
		addHideTreeNode($("tasksdetail"),$("contentarea"));
		addHideTreeNode($("taskssplit"),$("contentarea"));
	}
	if(configGetKey("modules.infostore.module") || configGetKey("modules.mail.module")) {
		addHideTreeNode($("mailCheck"),$("below_folders"));
	}
	addHideTreeNode($("folder_props"),$("contentarea"));
	addHideTreeNode($("config"),$("configComplete"));
	addHideTreeNode($("config_tags"),$("configComplete"));
	addHideTreeNode($("config_import"),$("configComplete"));
	addHideTreeNode($("config_calendar_team"),$("configComplete"));
	addHideTreeNode($("config_calendar"),$("configComplete"));
	addHideTreeNode($("config_contact"),$("configComplete"));
	addHideTreeNode($("config_infostore"),$("configComplete"));
	addHideTreeNode($("config_mail_signatures"),$("configComplete"));
	addHideTreeNode($("config_mail"),$("configComplete"));	
	addHideTreeNode($("config_portal"),$("configComplete"));	
	addHideTreeNode($("config_tasks"),$("configComplete"));	
	addHideTreeNode($("disable_background_window"),$("everything"));	
	addHideTreeNode($("disable_confirm_window"),$("disable_background_window"));	
	addHideTreeNode($("alert_window"),$("disable_confirm_window"));	
	addHideTreeNode($("create_window"),$("disable_confirm_window"));	
	addHideTreeNode($("conflict_window"),$("disable_confirm_window"));	
	addHideTreeNode($("logout_window"),$("disable_background_window"));	
	addHideTreeNode($("rightshandling_window"),$("disable_background_window"));
	addHideTreeNode($("acceptdeny_object"),$("disable_background_window"));
	addHideTreeNode($("global_about"),$("disable_background_window"));
	addHideTreeNode($("error_popup"),$("disable_background_window"));
	addHideTreeNode($("floatingdivParticipants"),$("everything"));	
	addHideTreeNode($("reminderWindow"),$("everything"));

	
	var d=$("menu_complete").childNodes;
	var tmpids=new Array();
	for(zaehler=0;zaehler<d.length;zaehler++) {
		if(d[zaehler].id) { tmpids.push(d[zaehler].id) }
	}
	for(var i=0;i<tmpids.length;i++) {
		addHideTreeNode($(tmpids[i]),$("menu_complete"),i+1);
	}
	var d=$("menu_dynamic_content").childNodes;
	var tmpids=new Array();
	for(zaehler=0;zaehler<d.length;zaehler++) {
		if(d[zaehler].id) { tmpids.push(d[zaehler].id) }
	}
	for(var i=0;i<tmpids.length;i++) {
		addHideTreeNode($(tmpids[i]),$("menu_dynamic_content"),i+1);
	}
	autorefill();
}
function autorefill() {
	showNode("menu_options_menu");
	showNode("menu_empty_content");
	showNode("configComplete");
	showNode("menu_empty_fillup");	
}
register("Loaded",rebuildTree);
register("OX_Configuration_Loaded_Complete",function () {
	var effectsarray1=["menu_portal", "menu_portal_quick_settings", 
					  "menu_mail", "menu_mail2", "menu_mail_view", "menu_mail_structure", 
					  "menu_calendar", "menu_calendar_views", "menu_calendar_timerange", "menu_calendar_teammember", 
					  "menu_contact", "menu_contact2", "menu_contacts_views", 
					  "menu_tasks", "menu_tasks_views",
					  "menu_infostore", "menu_infostore2", "menu_infostore_version", "menu_infostore_views", "menu_infostore_send",
					  "menu_import", "menu_configuration_folder", "menu_config_portal_external", "menu_config_mail_signatures", 
					  "menu_configuration_user", "menu_configuration_teams_teams", "menu_configuration_settings_categories", "menu_configuration_teams_member", "menu_configuration_adminright", "menu_configuration_folderright_folder", "menu_configuration_objectright_read", "menu_configuration_objectright_write", "menu_configuration_objectright_delete", "menu_global_confirmation", "menu_global_attachments", 
					  "menu_linking"];
	var effectsarray2 = ["menu_global_tags"];
	var singlearray1=["menu_search_mail_clearfield","menu_search_global_clearfield"];
	var singlearray2=["menu_small_mail","menu_small_calendar","menu_small_contacts",
				      "menu_small_distributionlist","menu_small_tasks","menu_small_infostore"];
	var singlearray3=["menu_big_portal","menu_big_mail","menu_big_calendar","menu_big_contacts","menu_big_tasks","menu_big_infostore","menu_big_save"];
						  
	if(configGetKey("gui.global.fading")) {
		for(var zaehler=0;zaehler<effectsarray1.length;zaehler++) {
			makeButtonElement1($ALL(effectsarray1[zaehler]));
		}
		for(var zaehler=0;zaehler<effectsarray2.length;zaehler++) {
			makeButtonElement2($ALL(effectsarray2[zaehler]));
		}
		for(var zaehler=0;zaehler<singlearray1.length;zaehler++) {
			setDOMMenuElement1($ALL(singlearray1[zaehler]));
		}
		for(var zaehler=0;zaehler<singlearray2.length;zaehler++) {
			setDOMMenuElement2($ALL(singlearray2[zaehler]));
		}
		for(var zaehler=0;zaehler<singlearray3.length;zaehler++) {
			setDOMMenuElement3($ALL(singlearray3[zaehler]));
		}
	}
});
