

var globalmenuDelegates = new Array();
globalmenuDelegates["draw"] = function(viewref) {
	var consts = viewref.constants;

	// link view reset handler
	var navid = viewref.nav.id;
	var viewid = viewref.id;

	document.onclick = function() {
		var navview = Navigation.getById(navid).getViewById(viewid);
		navview.clicked = false;
		var items = navview.viewport.getElementsByTagName("div");
		for(var i = 0; i < items.length; i++) {
			with(items[i]) {
				if(className.indexOf("folder") != -1) {
					style.display = "none";
					style.visibility = "hidden";
				}
				else if(className.indexOf("OVER") != -1) {
					className = className.substring(0, className.indexOf("OVER"));
				}
			}
		}
	};
	
	
	viewref.viewport.navview = viewref;
	viewref.viewport.style.visibility = "visible";
	viewref.viewport.onclick = function() {
		var browser = this.navview.nav.browser;
		var e = browser.getEvent(arguments);
		var src = browser.getEventSource(e);
		if(!(this.navview.clicked == true && src.nodeName.toLowerCase() == "a" && src.parentNode.innerHTML.search(/javascript:void/gi) == -1)) {
			e.cancelBubble = true;
			e.returnValue = false;
			e.preventDefault = true;
			return false;
		}
	};

	// loop over titles / items
	var items = viewref.viewport.getElementsByTagName("div");
	for(var i = 0; i < items.length; i++) {
		// link navview
		items[i].navview = viewref;
		if(items[i].className.indexOf("title") != -1) {
			// link handlers
			if(items[i].parentNode == viewref.viewport) {
				items[i].innerHTML = items[i].getElementsByTagName("a")[0].innerHTML; // opera is not fine with just stopping the events on the viewport ...
				items[i].onclick = viewref.delegates["title_CLICK"];
			}
			items[i].onmouseover = viewref.delegates["title_OVER"];
			// adjust widths for IE5.5
			if(items[i].style.width && viewref.nav.browser.version < 6) {
				items[i].style.width = (parseInt(items[i].style.width) + consts.LAYOUT_TOPITEM_LEFTPADDING) + "px";
			}
		}
		if(items[i].className.indexOf("item") != -1) {
			// link handlers
			items[i].onclick = viewref.delegates["item_CLICK"];
			items[i].onmouseover = viewref.delegates["item_OVER"];
			// adjust widths for IE5.5
			if(items[i].style.width != "" && viewref.nav.browser.version < 6) {
				items[i].style.width = (parseInt(items[i].style.width) + consts.LAYOUT_TOPITEM_LEFTPADDING) + "px";
			}
		}
	}
};
globalmenuDelegates["title_CLICK"] = function() {
	var consts = this.navview.constants;
	this.navview.clicked = true;
	// calc folder position
	var folderitem = browser.getNextNodeByTagName(this, "div");
	//if(folderitem.style.top == "" || folderitem.style.left == "") {
		var srcitem = this.navview.nav.browser.getEventSource(this.navview.nav.browser.getEvent(arguments));
		srcitem = (srcitem.nodeName.toLowerCase() == "a")? srcitem.parentNode : srcitem;
		// calc top
		var foldertop = consts.LAYOUT_VIEWPORT_HEIGHT;
		if(this.navview.nav.browser.version >= 6) foldertop = foldertop + 1;
		
		// calc left
		var itemright = consts.LAYOUT_BODY_LEFT + consts.LAYOUT_VIEWPORT_POSLEFT + srcitem.offsetLeft + parseInt(folderitem.style.width);
		if(itemright > consts.LAYOUT_VIEWPORT_BODY_WIDTH) {
			consts.LAYOUT_VIEWPORT_BODY_WIDTH - (consts.LAYOUT_BODY_LEFT + consts.LAYOUT_VIEWPORT_POSLEFT + parseInt(folderitem.style.width))
			
			var folderleft = consts.LAYOUT_VIEWPORT_BODY_WIDTH - (consts.LAYOUT_BODY_LEFT + consts.LAYOUT_VIEWPORT_POSLEFT + parseInt(folderitem.style.width))
			
			if(this.navview.nav.browser.version >= 6) {
				var folderleft = folderleft - 2 * consts.LAYOUT_FOLDER_BORDERWIDTH;
			}
		}
		else var folderleft = srcitem.offsetLeft;
		folderleft += consts.LAYOUT_VIEWPORT_POSLEFT + consts.LAYOUT_BODY_LEFT;
	//}
	// set style
	this.className = "titleOVER";
	with(browser.getNextNodeByTagName(this, "div").style) {
		display = "block";
		visibility = "visible";
		if(foldertop) top = foldertop + "px";
		if(folderleft) left = folderleft + "px";
	}
};
globalmenuDelegates["title_OVER"] = function() {
	var consts = this.navview.constants;
	var browser = this.navview.nav.browser;
	if(this.navview.clicked) {
		// reset view
		var items = this.parentNode.getElementsByTagName("div");
		for(var i = 0; i < items.length; i++) {
			with(items[i]){
				if(className.indexOf("folder") != -1) {
					style.display = "none";
					style.visibility = "hidden";
				}
				else if(className.indexOf("OVER") != -1) {
					className = className.substring(0, className.indexOf("OVER"));
					var imgs = items[i].getElementsByTagName("img");
					if(imgs.length > 0) imgs[0].src = consts.PATH_IMG_ARROW;
				}
			}
		}
		// calc folder position
		var folderitem = browser.getNextNodeByTagName(this, "div");

		var srcitem = this.navview.nav.browser.getEventSource(this.navview.nav.browser.getEvent(arguments));
		srcitem = (srcitem.nodeName.toLowerCase() == "a")? srcitem.parentNode : srcitem;
		
		// calc top
		var foldertop = consts.LAYOUT_VIEWPORT_HEIGHT;
		if(this.navview.nav.browser.version >= 6) foldertop = foldertop + 1;
			
			
		// calc left
		var itemright = consts.LAYOUT_BODY_LEFT + consts.LAYOUT_VIEWPORT_POSLEFT + srcitem.offsetLeft + parseInt(folderitem.style.width);
		if(itemright > consts.LAYOUT_VIEWPORT_BODY_WIDTH) {
			consts.LAYOUT_VIEWPORT_BODY_WIDTH - (consts.LAYOUT_BODY_LEFT + consts.LAYOUT_VIEWPORT_POSLEFT + parseInt(folderitem.style.width))
			
			var folderleft = consts.LAYOUT_VIEWPORT_BODY_WIDTH - (consts.LAYOUT_BODY_LEFT + consts.LAYOUT_VIEWPORT_POSLEFT + parseInt(folderitem.style.width))
			
			if(this.navview.nav.browser.version >= 6) {
				var folderleft = folderleft - 2 * consts.LAYOUT_FOLDER_BORDERWIDTH;
			}
		}
		else var folderleft = srcitem.offsetLeft;
		folderleft += consts.LAYOUT_VIEWPORT_POSLEFT + consts.LAYOUT_BODY_LEFT;
			

		// set styles
		this.className = "titleOVER";
		var imgs = this.getElementsByTagName("img");
		if(imgs.length > 0) imgs[0].src = consts.PATH_IMG_ARROWOVER;
		with(folderitem.style) {
			display = "block";
			visibility = "visible";
			if(foldertop) top = foldertop + "px";
			if(folderleft) left = folderleft + "px";
		}
	}
};
globalmenuDelegates["item_OVER"] = function() {
	var consts = this.navview.constants;
	if(this.navview.clicked) {
		var items = this.parentNode.getElementsByTagName("div");
		for(var i = 0; i < items.length; i++) {
			with(items[i]) {
				if(className.indexOf("folder") != -1) {
					style.display = "none";
					style.visibility = "hidden";
				}
				else if(className.indexOf("OVER") != -1) {
					className = className.substring(0, className.indexOf("OVER"));
					var imgs = items[i].getElementsByTagName("img");
					if(imgs.length > 0) imgs[0].src = consts.PATH_IMG_ARROW;
				}
			}
		}
		this.className = "itemOVER";
	}
};
globalmenuDelegates["item_CLICK"] = function() {
	var a = this.getElementsByTagName("a")[0];
	document.location.href = a.getAttribute("href");
};

window.onresize = calcLeftPos;

function calcLeftPos(){
	browserWidth = document.width;
	globalmenuConstants["LAYOUT_BODY_LEFT"] = (browserWidth > globalmenuConstants["LAYOUT_BODY_WIDTH"] ) ?
		parseInt( (browserWidth - globalmenuConstants["LAYOUT_BODY_WIDTH"] ) / 2 ):
		0;
	globalmenuConstants["LAYOUT_VIEWPORT_BODY_WIDTH"] = globalmenuConstants["LAYOUT_BODY_LEFT"] + globalmenuConstants["LAYOUT_VIEWPORT_WIDTH"];
}

var globalmenuConstants = new Array();
globalmenuConstants["LAYOUT_VIEWPORT_HEIGHT"]     = 83;  // [px]
globalmenuConstants["LAYOUT_VIEWPORT_POSLEFT"]    = 237;  // [px]
globalmenuConstants["LAYOUT_TOPITEM_LEFTPADDING"] = 2;  // [px]
globalmenuConstants["LAYOUT_VIEWPORT_WIDTH"]      = 485; // [px]
globalmenuConstants["LAYOUT_VIEWPORT_BODY_WIDTH"] = 0; // [px]
globalmenuConstants["LAYOUT_VIEWPORT_LEFT"]       = 238; // [px]
globalmenuConstants["LAYOUT_BODY_WIDTH"]          = 996; // [px]
globalmenuConstants["LAYOUT_BODY_LEFT"]           = 0; // [px]
globalmenuConstants["LAYOUT_FOLDER_BORDERWIDTH"]  = 1;   // [px]
globalmenuConstants["PATH_IMG_ARROW"]             = "../img/ico_more.gif";
globalmenuConstants["PATH_IMG_ARROWOVER"]         = "../img/ico_more.gif";

// ///// RUNTIME:



var execGlobalmenu = function() {
	if(!window.browser) window.browser = new AbstractBrowser();
	globalnav = new Navigation("navmenu", browser, null);
	globalnav.setTree(new NavigationTree("navMenu", null, new Function()));
	globalnav.setView("globalmenu", new NavigationView("navMenu", globalmenuDelegates, "../css/menu.css", globalmenuConstants));
	globalnav.write();
	window.setTimeout("calcLeftPos()", 2000);
}


// include navigation core
var NAVIGATION_INC_URL = "/js/navigation.js";
try {
	if(AbstractBrowser && Navigation && NavigationTree && NavigationView) {
		execGlobalmenu();
	}
	else throw new Error();
}
catch(x) {
	try {
		NavRuntimes.NAVCORE_INC_REQUESTED;
	}
	catch(x) {
		NavRuntimes = new Array();
	}
	if(!NavRuntimes.NAVCORE_INC_REQUESTED) {
		document.write("\<script type='text/javascript' src='" + NAVIGATION_INC_URL + "'>\</script\>");
		NavRuntimes.NAVCORE_INC_REQUESTED = true;
	}
	NavRuntimes[NavRuntimes.length] = execGlobalmenu;
	try {
		if(AbstractBrowser && Navigation && NavigationTree && NavigationView) {
			execGlobalmenu();
		}
	}
	catch(x) {}
}

