// JavaScript Document
var mdcOptions	=	{
			NavClassPre:		"navi_point",		// Navigation Class-Prefix -> mdcNav Object
			NavIdPre:				"nav",					// Navigation ID-Prefix -> mdcNav Object
			ContIdPre:			"dyn",					// Content ID-Prefix
			http:						false,					// http  -> mdcAjax Object
			urlExt:					".php",					// Dateierweiterung für dynamischen Kontent  -> mdcAjax Object
			dynContId:			"dynCont"				// Ziel-Layer für dynamischen Content  -> mdcDynCont Object
};


var	mdcNav	=	{

			regEvNav:	function () {
				var tdElem	=	document.getElementsByTagName('td');

				var addEv = function () {
					for (var i = 0; i < tdElem.length; i++) {			 	// Für alle TD-Elemente...
						var id 					= tdElem[i].id;				       	// TD-Element-ID ermitteln...
						var subStr			= mdcHelpFn.subStrValue(id);	// an die Funktion subStrValue übergeben...
						var tdIdPre			= subStr.first;								// um Teil-String zurückzubekommen.

						if (tdIdPre == mdcOptions.NavIdPre) {	
							mdcEvent.addEvent(tdElem[i], "mouseover", mdcNav.overNavPoint);
							mdcEvent.addEvent(tdElem[i], "mouseout", mdcNav.outNavPoint);
							mdcEvent.addEvent(tdElem[i], "click", mdcNav.actNavPoint);
							mdcEvent.addEvent(tdElem[i], "click", mdcNav.newCont);
						}
					};
				};
				addEv();
			},
			
			overNavPoint:	function (e){
				var elem	=	mdcEvent.getEventTarget(e);
				
				if (!elem) {
					window.alert('funcion mdcNav.overNavPoint: Event-Element nicht vorhanden');
				} else {
					switch(elem.className) {
						case mdcOptions.NavClassPre+"_normal":
							elem.className = mdcOptions.NavClassPre+'_over';
							break;
						case mdcOptions.NavClassPre+"_over":
							elem.className = mdcOptions.NavClassPre+'_normal';
							break;
					}
				}			
			},
			
			outNavPoint:	function (e){
				var elem	=	mdcEvent.getEventTarget(e);
				
				if (!elem) {
					window.alert('funcion mdcNav.outNavPoint: Event-Element nicht vorhanden');
				} else {
					switch(elem.className) {
						case mdcOptions.NavClassPre+"_normal":
							elem.className = mdcOptions.NavClassPre+'_over';
							break;
						case mdcOptions.NavClassPre+"_over":
							elem.className = mdcOptions.NavClassPre+'_normal';
							break;
					}
				}			
			},
			
			actNavPoint: function (e){
				var elem		=	mdcEvent.getEventTarget(e);
				var tdElem	=	document.getElementsByTagName('td');
				
				var actNavPoint =	function () {
					for (i = 0; i < tdElem.length; i++) {
						var	tdClassName	=	tdElem[i].className;
						
						if (tdClassName == mdcOptions.NavClassPre+'_active') {
							tdElem[i].className	=	mdcOptions.NavClassPre+'_normal';
							elem.className	=	mdcOptions.NavClassPre+'_active';
							break;
						}
					};
				};
				actNavPoint();
			},
			
			newCont:	function (e) {
				var elemId	=	mdcEvent.getEventTarget(e).id;
				
				var setNewCont = function () { 
					if (!elemId) {
						window.event;
					} else {
						mdcAjax(elemId);
					}
				};
				setNewCont();
			}
};

var mdcDynCont	=	function () {
			var dynElem	=	document.getElementById(mdcOptions.dynContId);

			var newCont	=	function () {
				if(mdcOptions.http.readyState == 4) {
					if (mdcOptions.http.status == 200) {
						dynElem.innerHTML = mdcOptions.http.responseText;
					} else {
						window.alert('funcion mdcDynCont.setNewCont: 404, angeforderte Daten nicht vorhanden');
					}
				};
			};
			newCont();
			
			var addNewEv = function () {
				var elem		=	document.getElementsByTagName("*");
				
				for (i = 0; i < elem.length; i++) {
					if(elem[i].className.indexOf('link') != -1 || elem[i].className.indexOf('tool') != -1)
						mdcEvent.addEvent(elem[i], "click", mdcNav.newCont);
				};
			};
			addNewEv();
};

// AJAX-Funktionen
var mdcAjax	=	function (elemId) {
			var id 					= elemId;
			var subStr			= mdcHelpFn.subStrValue(id);
			var firstPre		= subStr.first;
			var secondPre		=	subStr.second;
			var thirdPre		=	subStr.third;
			
			var setUrl = function () {
				if (!id) {
					window.alert('funcion mdcAjax.setUrl: Element-ID nicht vorhanden');
				} else {
					switch (firstPre) {
						case mdcOptions.NavIdPre:
							url =	mdcOptions.ContIdPre+'_'+thirdPre+mdcOptions.urlExt;
							break;
						case mdcOptions.ContIdPre:
							url = id+mdcOptions.urlExt;
							break;
					}
				};
			};
			setUrl();
			
			var getHtmlObj = function () {
				if (window.XMLHttpRequest) {
					mdcOptions.http = new XMLHttpRequest();
					
					if (mdcOptions.http.overrideMimeType) {
						mdcOptions.http.overrideMimeType('text/xml');
					}
				} else if (window.ActiveXObject) {
					try {
						mdcOptions.http = new ActiveXObject("Msxml2.XMLHTTP");
					} catch (e) {
						try {
							mdcOptions.http = new ActiveXObject("Microsoft.XMLHTTP");
						} catch (e) {}
					}
				}
				if (!mdcOptions.http) {
					alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
					return false;
				}
				mdcOptions.http.open('GET', url, true);
				mdcOptions.http.setRequestHeader( 'Content-length', url.length );
				mdcOptions.http.onreadystatechange = mdcDynCont;
				mdcOptions.http.send(null);
			};
			getHtmlObj();
};

// Event-Funktionen
var mdcEvent	=	{
	
			getEventTarget: function(e) {	return (e.target) ? e.target : e.srcElement;	},
		
			addEvent:	function ( obj, type, fn ) {
				if (obj.addEventListener) {
					obj.addEventListener( type, fn, false );
				} else if (obj.attachEvent) {
					obj["e"+type+fn] = fn;
					obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
					obj.attachEvent( "on"+type, obj[type+fn] );
				}
			},
		
			removeEvent:	function ( obj, type, fn ) {
				if (obj.removeEventListener) {
					obj.removeEventListener( type, fn, false );
				} else if (obj.detachEvent) {
					obj.detachEvent( "on"+type, obj[type+fn] );
					obj[type+fn] = null;
					obj["e"+type+fn] = null;
				}
			}
};

// Hilfs-Funktionen
var mdcHelpFn	=	{

			// Zerlegt ID- oder CLASS-Value in zwei/drei Bestandteile (X_Y_Z)
			subStrValue:	function (id) {
				var strCompl		=	id;
				var first				=	strCompl.substr(0, strCompl.search('_'));
				var n						= strCompl.substr(strCompl.search('_')+1, strCompl.length);
				var second			=	n.substr(0, n.search('_'));
				var third				= n.substr(n.search('_')+1, n.length);
				var subStrValue	=	{	first:	first, second:	second, third:	third };
				return subStrValue;
			}
};
		
window.setTimeout('mdcNav.regEvNav()', 500);
