var inpreparation=false;
//var inpreparation_sub=false;

//--- link connection's elements are array [divid, linkid, onstyle, offstyle]
var linkconnections = [];

var isIE = false, isNS = false, isDOM = false, isNS4 = false;
var vis = "", invis = "";
if (document.all) {isIE = true; vis="visible";invis="hidden";}
if (document.layers){isNS = true; isNS4=true; vis="show";invis="hide";}
if (document.getElementById && !isIE) {isDOM=true; invis ="hidden"; vis = "visible"}


function show_div(who, linkconnection, linkconnectionclasson, linkconnectionclassoff) {
	inpreparation = false;
	hide_div();

	if (linkconnection)	{
		add_linkconnection(who, linkconnection, linkconnectionclasson, linkconnectionclassoff);
	}
	document.getElementById(who).style.display = 'block'; 
	linkconnection_on(who);
}

//--- link connection functions
function get_linkconnection(divid) {
	for (var i=0; i<linkconnections.length; i++) {
		if (linkconnections[i][0] == divid) {
			return linkconnections[i];
		}
	}
}
function add_linkconnection(divid, linkid, onstyle, offstyle) {
	var existingconnection = get_linkconnection(divid);
	if (existingconnection) {
		if (existingconnection[1] == linkid && existingconnection[2] == onstyle && existingconnection[3] == offstyle) {
			//--- already there, nothing to be done
			return;
		} else {
			//--- there but not same, remove it
			delete_linkconnection(divid);
		}
	}

	//--- add the connection
	var newelement = [divid, linkid, onstyle, offstyle];
	linkconnections.push(newelement);
}
function delete_linkconnection(divid) {

}
function linkconnection_on(divid) {
	var linkdata = get_linkconnection(divid);
	if (linkdata && linkdata[1]) {
		document.getElementById(linkdata[1]).className = linkdata[2];
	}
}
function linkconnection_off(divid) {
	var linkdata = get_linkconnection(divid);
	if (linkdata && linkdata[1]) {
		document.getElementById(linkdata[1]).className = linkdata[3];
	}
}

function show_hide_div(who, linkconnection, linkconnectionclasson, linkconnectionclassoff) {
	var mydiv = document.getElementById(who);
	if (!mydiv) { return; }

	if (linkconnection)	{
		add_linkconnection(who, linkconnection, linkconnectionclasson, linkconnectionclassoff);
	}

	if (mydiv.style.display != 'block')	{
		hide_div();
		mydiv.style.display = 'block';
		linkconnection_on(who);
	} else {
		hide_div();
	}
}

function hide_div() {
	var els = document.getElementsByTagName("div");
	for(var i=0; i<els.length; i++) {
		var him = els[i];
		var idstr = him.getAttribute("id");
		if (idstr != "" && idstr != null && (idstr.indexOf("layer_") >= 0 || idstr.indexOf("layer_") >= 0) && him.style.display == 'block') { 
			him.style.display = 'none'; 
			linkconnection_off(idstr);
		}
	}	
}

function cpre(keeplinkstyle, styletokeep) {
	inpreparation = false;
//	cpre_sub();
	if (keeplinkstyle) {
		document.getElementById(keeplinkstyle).className = styletokeep;
	}
}

function prepared_toclose() {
	if (inpreparation) { hide_div(); }
}

function preparetoclose() {
	inpreparation=true;
	setTimeout(prepared_toclose, 1000);
}



/*
// sub functions, only needed if you use sub-sub layers
function show_sub(who) {
	inpreparation_sub = false;
	hide_sub();
	document.getElementById(who).style.display = 'block'; 
}

function hide_sub() {
	for(var i=0; i<document.getElementsByTagName("div").length; i++) {
		var idstr = document.getElementsByTagName("div")[i].getAttribute("id");
		if (idstr != "" && idstr != null && (idstr.indexOf("Lsub_") >= 0)) { 
			document.getElementById(idstr).style.display = 'hidden'; 
		}
	}	
}



if (navigator.appName != "Netscape") {
	document.onmouseup = hide_sub;
} else {
	window.captureEvents(Event.MOUSEUP);
	window.onmouseup = hide_sub;
}

function cpre_sub() {
	inpreparation_sub = false;
}

function prepared_toclose_sub() {
	if (inpreparation_sub) { hide_sub(); }
}

function preparetoclose_sub() {
	inpreparation_sub=true;
	setTimeout(prepared_toclose_sub, 1000);
}
*/