// navigation scripts by atelier w, stefan niederhauser
//

navHtmlPre = "hom_";
navHtmlPost = ".html";
navTopPre = "../gif/hom_nav_";
navTopPost = ".gif";
navTopActive = "a";
navTopName = "navTop";
navSubName = "navSub";

navTopNum = 4;
navSubNum = Array(0, 4, 0, 0, 0);

navLinks = new Object();


navOutDelay = 600;
navOverDelay = 150;

navTopLast = 0;
navSubLast = 0;
navTopAct = 0;
navSubAct = 0;
navTimer = 0;
navOverTimer = 0;
imgCache = new Object();
setTimeout('navPreload()', 1500);

// main navigation functions

function navSync(str, t, s) {
	var frame;
	if (t > 0 && s > 0) {
		document.navSubActivate(t, s);
		return;
	}
	// decode the filename ( /path/topic_x_y.html)
	if (str.lastIndexOf('/') >= 0) str = str.substring(str.lastIndexOf('/')+1);
	var i = str.indexOf('_');
	var j = str.indexOf('_', i+1);
	var k = str.indexOf('.', j+1);
	var topic = str.substring(0, i);
	var top = str.substring(i+1, j);
	var sub = str.substring(j+1, k);
	if (topic != "" && top > 0 && sub > 0) {
		navSubActivate(top, sub);
	}
}

function navOutSetTimer() {
	navOutClearTimer();
	navTimer = setTimeout('navTopShow('+navTopAct+');', navOutDelay);
}

function navOutClearTimer() {	
	clearTimeout(navTimer);
}

function navOverSetTimer(t) {
	navOverClearTimer();
	navTimer = setTimeout('navTopShow('+t+');', navOverDelay);
}

function navOverClearTimer() {	
	clearTimeout(navOverTimer);
}

function navReset() {
	navSubActivate(0, 0);
}

function navTopShow(t) {
	if (navTopLast > 0 && t != navTopLast) showHideLayers('divNavTop'+navTopLast, '', 'hide');
	if (t != navTopLast && t > 0) showHideLayers('divNavTop' + t,'','show');
	if (navTopLast > 0 && navTopLast != t && navTopLast != navTopAct) navPicActive(false, navTopLast);
	if (t > 0 && t != navTopLast) navPicActive(true, t);
	navTopLast = t;
}

// link to some page, but activate some level in the navigation
function navOther(t, s, link) {
	navOutClearTimer();
        navSubActivate(t, s);
       document.location = link;
	return false;
    
}

function navTopActivate(t) {
	if (t != navTopAct) {
		navPicActive(false, navTopAct);
		navTopShow(t);
		navTopAct = t;
	}
}

function navSubActivate(t, s) {
	if (t != navTopAct || s != navSubAct) {
		navPicActive(false, navTopAct, navSubAct);
		navPicActive(true, t, s);
		navTopActivate(t);
		navSubAct = s;
	}
}

function navPicActive(isActive, t, s) {
	if (t == 0 || s == 0) return;
	var imgCode = (s > 0 ? navSubName + t + "_" + s : navTopName + t);
	var imgSrc = navTopPre + t + (s > 0 ? "_" + s : "") + (isActive ? navTopActive : "") + navTopPost;
	var img = findObj(imgCode);
	if (img != null) img.src = imgSrc;
}

// navigation mouse events

function navTopOver(t) {
	navOutClearTimer();
	navOverSetTimer(t);
	return false;
}

function navTopOut(t) {
	navOverClearTimer();
	navOutSetTimer();
	return false;
}

function navTopClick(t) {
	return navSubClick(t, 1);
}

function navSubOver(t, s) {
	navOverClearTimer();
	navOutClearTimer();
	if (t == navTopAct && s == navSubAct) return false;
	navPicActive(true, t, s);
	navSubLast = s;
	return false;
}

function navSubOut(t, s) {
	navOutSetTimer();
	if (t == navTopAct && s == navSubAct) return false;
	navPicActive(false, t, s);
	return false;
}

function navSubClick(t, s) {
	navOverClearTimer();
	navSubActivate(t, s);

	if (navLinks[t+"_"+s]) {
		var link = navLinks[t+"_"+s];
		if (link.substring(0,1) == '!') {
			var code = link.substring(1);
			eval(code);
		} else {
		    document.location = navLinks[t+"_"+s];
		}
	}
	else 
	    document.location = navHtmlPre + t + "_" + s + navHtmlPost;
	return false;
}


// utility functions

function findObj(n, d) {
	var p,i,x;
  	if (!d) d=document;
	if ((p = n.indexOf("?")) > 0 && parent.frames.length) {
	    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
	}
  	if (!(x = d[n]) && d.all) x=d.all[n];
	for (i=0; !x && i < d.forms.length; i++) x=d.forms[i][n];
	for (i=0; !x && d.layers && i < d.layers.length; i++) x = findObj(n,d.layers[i].document);
	if (x==null && document.getElementById) x = document.getElementById(n);
	return x;
}


function showHideLayers() {
	var i, p, v, obj, args = showHideLayers.arguments;
	for (i = 0; i < (args.length - 2); i += 3) {
	    if ((obj = findObj(args[i])) != null) { 
    		v = args[i+2];	
		if (obj.style) {
		    obj = obj.style; 
		    v = (v == 'show') ? 'visible' : (v = 'hide') ? 'hidden': v;
		}
		obj.visibility=v;
	    }
	}
}

function navPreload() {
	for (i = 1; i <= navTopNum; i++) {
	    imgPreload(navTopName, navTopPre, i, navTopPost, navTopActive);
	    for (j = 1; j <= navSubNum[i]; j++) {
		imgPreload(navSubName, navTopPre, i+"_"+j, navTopPost, navTopActive);
	    }
	}
}

function imgPreload(name, imgPre, imgNum, imgPost, imgAct) {
	var imgName = name + imgNum + imgAct;
	var img = new Image();
	img.src = imgPre + imgNum + imgAct + imgPost;
	imgCache[imgName] = img;

	// if (imgAct) imgPreload(name, imgPre, imgNum, imgPost, "");
}

function winOpen(winName, path, feat) {
	if (feat == "full")
		feat = "toolbar=1,location=1,status=1,menubar=1,resizable=1,scrollbars=1";
	var win = window.open(winName, path, feat);
	win.focus();
}


