// startet Observer für Navi, ContactNavi und FooterNavi Elemente, wenn DOM geladen wurde
document.observe("dom:loaded", function() {
	$$(".naviItem").each(function(naviItem) {
		naviItem.observe("click", function() {
			link = naviItem.readAttribute("link");
			id = naviItem.readAttribute("id");
			hasEntries = naviItem.readAttribute("hasEntries");
			bigPicDirId = naviItem.readAttribute("bigPicDirId");
			
			naviClick(link, id, hasEntries, bigPicDirId);
		});
	});
	
	$$(".contactNaviItem").each(function(contactNaviItem) {
		contactNaviItem.observe("click", function() {
			link = contactNaviItem.readAttribute("link");
			id = contactNaviItem.readAttribute("id");
			bigPicDirId = contactNaviItem.readAttribute("bigPicDirId");
			
			naviContactClick(link, id, bigPicDirId);
		});
	});
	
	$$(".footerNaviItem").each(function(footerNaviItem) {
		footerNaviItem.observe("click", function() {
			link = footerNaviItem.readAttribute("link");
			id = footerNaviItem.readAttribute("id");
			bigPicDirId = footerNaviItem.readAttribute("bigPicDirId");
			
			naviFooterClick(link, id, bigPicDirId);
		});
	});
	
	$$(".listviewItem").each(function(listviewItem) {
		listviewItem.observe("click", function() {
			link = listviewItem.readAttribute("link");
			
			listviewClick(link);
		});
	});
});

// Startet Observer für Subnavi Elemente, wenn diese Geladen wurden
document.observe("subnavi:loaded", function() {
	$$(".subnaviItem").each(function(subnaviItem) {
		subnaviItem.observe("click", function() {
			link = subnaviItem.readAttribute("link");
			id = subnaviItem.readAttribute("id");
			bigPicDirId = subnaviItem.readAttribute("bigPicDirId");
			
			subnaviClick(link, id, bigPicDirId);
		});
	});
});

// Startet Observer für Listview Elemente, wenn diese Geladen wurden
document.observe("content:loaded", function() {
	$$('.lightwindowIframe').each(function(lightwindow){
		lightwindow.addClassName('lightwindow');
		lightwindow.writeAttribute('params','lightwindow_width=830,lightwindow_height=450,lightwindow_type=external');
	});

	var contentLightWindow = new lightwindow();

	$$(".listviewItem").each(function(listviewItem) {
		listviewItem.observe("click", function() {
			link = listviewItem.readAttribute("link");
			
			listviewClick(link);
		});
	});
	
	 

	/*
	*	Input Felder beobachten. Falls etwas in Ihnen geändert wird,
	*	soll die checkFields Funktion aufgerufen werden
	*/
	var workSets = $$(".rowTarget");
	workSets.each(function(elem){
		    elem.onchange = function(){
		         checkMyFields();
		    };
	});
	
	
	/*
	* Formvalidator anschmeissen
	*/
	loadAction();

});


/**
 * Weist allen Linkelementen von angegebenen Containern eine leere Klasse zu
 * 
 * @param divs (String) - zu durchsuchende Container kommasepariert
 */
function removeActiveNaviClasses(divs) {
	// Kommaseparierter String trennen und in Array speichern
	var container = divs.split(",");
	
	// Durchlauf für jeden übergebenen Container
	for(var i = 0; i < container.length; i++) {	
		var naviContainer = $(container[i]);
		
		// löschen der Klasse nur, wenn Container sichtbar ist
		if($(naviContainer).visible()) {
			// Allen Navigationselementen in Container leere Klasse zuweisen
			$(naviContainer).select("a").each(function(href) {
				href.removeClassName("active");
			});
		}
	}
}


/**
 * Blendet Subnavigationscontainer ein und lädt danach Subnavi
 * 
 * @param naviItemId - ID des Subnavigationspunktes
 * @param parentId - ID der Subnavigation = ID des Hauptnavigationpunktes
 */
function showSubnavi(naviItemId, parentId) {
	// Einblenden der Subnavi nur wenn diese nicht vorhanden ist
	if(!$("subnavi").visible()) {
		$("bigPic").morph("width: 480px;");
		
		Effect.SlideDown("subnavi", { 
			scaleX: true, 
			afterFinish: function() {
				loadSubnavi(naviItemId, parentId);
			}
		}); 
	} else {
		loadSubnavi(naviItemId, parentId);
	}
}


/**
 * Blendet Subnavigationscontainer aus
 */
function hideSubnavi() {
	$("bigPic").morph("width: 569px;");
	
	Effect.SlideUp("subnavi", { 
		scaleX: true, 
		beforeStart: function() {
			$("subnaviList").hide();
		}
	}); 
}


/**
 * Lädt Subnavigation
 * 
 * @param naviItemId - ID des Subnavigationspunktes
 * @param parentId - ID der Subnavigation = ID des Hauptnavigationpunktes
 */
function loadSubnavi(naviItemId, parentId) {
	// Laden der Subnavigation
	new Ajax.Updater("subnavi", "/include/subnavi.php", {
		method: "post", 
		parameters: {
			subnaviId: parentId
		},
		
		// Ladebalken während des Ajax Requests einblenden
		onLoading: function() {
			$(parentId).addClassName("ajaxLoading");
			if(naviItemId)
				$(naviItemId).addClassName("ajaxLoading");
		},
		
		// Ladebalken ausblenden und Navipunkt aktiv setzen
		onComplete: function() {
			$(parentId).removeClassName("ajaxLoading");
			$(parentId).addClassName("active");
			
			if(naviItemId) {
				$(naviItemId).removeClassName("ajaxLoading");
				$(naviItemId).addClassName("active");
			}
			
			document.fire("subnavi:loaded");
			
			$("subnaviList").show();
		}
	});
}


/**
 * Lädt Contentbereich 
 * 
 * @param link (String) - Link, welcher geladen wird
 * @param naviItemId (int) - ID des Navigationspunktes, welcher geklickt wurde
 */
function loadContent(link, naviItemId) {
	new Ajax.Updater("main", link, {
		method: "post", 
		evalJS: true,
		parameters: {
			ajaxLoad: true
		},
		
		// Ladebalken während des Ajax Requests anzeigen einblenden
		onLoading: function() {
			if(naviItemId)
				$(naviItemId).addClassName("ajaxLoading");
		},
		
		// Ladebalken ausblenden und Navipunkt aktiv setzen
		onComplete: function() {
			if(naviItemId) {
				$(naviItemId).removeClassName("ajaxLoading");
				$(naviItemId).addClassName("active");
			}
			
			document.fire("content:loaded");
		}
	}); 
}


/**
 * Lädt bigPics und startet Slideshow erneut
 * 
 * @param bigPicDirId (int) - ID für bigPic Bildverzeichnis
 */
function loadBigPics(bigPicDirId) {
	new Ajax.Updater("bigPic", "/include/ajax/load_bigPics.php", {
		method: "post",
		parameters: {
			ajaxLoad: true,
			bigPicDirId: bigPicDirId
		},
		
		// Slideshow starten
		onComplete: function() {
			if($("bigPic").immediateDescendants().size() > 1) {
				new Protofade("bigPic", { 
					duration: 2.0,
					delay: 4.0
				});
			}
		}
	});
}


/**
 * Wird ausgeführt bei Klick auf Navigationspunkt
 * 
 * @param weHref (String) - Link, welcher im Contenbereich geladen wird
 * @param weId (int) - ID zum aktiv setzen des geklicktem Navipunktes
 * @param hasEntries (boolean) - true, wenn Navipunkt Unterpunkte besitzt
 * @param bigPicDirId (int) - ID für bigPic Bildverzeichnis
 */
function naviClick(weHref, weId, hasEntries, bigPicDirId) {
	removeActiveNaviClasses("navi,contact,footer");
	
	// Falls Navigationspunkt Einträge besitz, Subnavi einblenden, andernfalls ausblenden
	if(hasEntries == "true") {
		showSubnavi("", weId);
	} else if($("subnavi").visible()) {
		hideSubnavi();
	}
	
	loadContent(weHref, weId);
	
	loadBigPics(bigPicDirId);
}


/**
 * Wird ausgeführt bei Klick auf Subnavigationspunkt
 * 
 * @param weHref (String) - Link, welcher im Contenbereich geladen wird
 * @param weId (int) - ID zum aktiv setzen des geklickten Navipunktes
 * @param bigPicDirId (int) - ID für bigPic Bildverzeichnis
 */
function subnaviClick(weHref, weId, bigPicDirId) {
	removeActiveNaviClasses("subnavi,contact,footer");

	loadContent(weHref, weId);
	
	loadBigPics(bigPicDirId);
}


/**
 * Wird ausgeführt bei Klick auf Navigationspunkt im Headbereich
 * 
 * @param weHref (String) - Link, welcher im Contenbereich geladen wird
 * @param weId (int) - ID zum aktiv setzen des geklickten Navipunktes
 * @param bigPicDirId (int) - ID für bigPic Bildverzeichnis
 */
function naviContactClick(weHref, weId, bigPicDirId) {
	 removeActiveNaviClasses("navi,subnavi,contact,footer");

 	// Ausblenden der Subnavi wenn diese sichtbar ist
 	if($("subnavi").visible()) {
		hideSubnavi();
	}
 	
 	loadContent(weHref, weId)
 	
 	loadBigPics(bigPicDirId);
}


/**
 * Wird ausgeführt bei Klick auf Navigationspunkt im Footerbereich
 * 
 * @param weHref (String) - Link, welcher im Contenbereich geladen wird
 * @param weId (int) - ID zum aktiv setzen des geklickten Navipunktes
 * @param bigPicDirId (int) - ID für bigPic Bildverzeichnis
 */
function naviFooterClick(weHref, weId, bigPicDirId) {
	 removeActiveNaviClasses("navi,subnavi,contact,footer");

 	// Ausblenden der Subnavi wenn diese sichtbar ist
 	if($("subnavi").visible()) {
		hideSubnavi();
	}
 	
 	loadContent(weHref, weId)
 	
 	loadBigPics(bigPicDirId);
}


/**
 * Wird ausgeführt bei Klick auf Listviewverlinkung
 * 
 * @param weHref (String) - Link, welcher im Contenbereich geladen wird
 */
function listviewClick(weHref) {
	if($("subnavi").visible()) {
		var activeSubnaviItem = $("subnavi").select(".subnaviItem[link=" + weHref + "]").first();
		var activeSubnaviId = false;
		
		if(activeSubnaviItem)
			activeSubnaviId = activeSubnaviItem.readAttribute("id");
	}
	
	loadContent(weHref, activeSubnaviId);
}
 

/**
 * Lädt Navigationen inklusive Content bei Aufruf einer Seite
 * 
 * @param naviId (int) - ID der Navi bzw. Subnavi
 * @param parentId (int) - wenn naviId = Subnavi, ID der Navi
 * @param hasEntries (boolean) - true, wenn Navi Unterpunkte besitzt
 */
function loadNavi(naviId, parentId, hasEntries) {	
	// wenn parentId leer, naviId = ID der Subnavi und ID zum aktive setzen des Hauptnavipunktes
	if(parentId == "") {
		// Einblenden der Subnavi nur wenn Navipunkt Unterpunkte besitzt
		if(hasEntries) {
			showSubnavi("", naviId);
		} else {
			// Hauptnavipunkt aktiv setzen
			if($(naviId))
				$(naviId).addClassName("active");
		}
	} else {
		showSubnavi(naviId, parentId);
	}
}
