var naviSpeed = 500;
var timerNaviToDefault;

jQuery().ready(function () {
	// ==============================================================
	// klappe alle Naviebenen ein
	//GetULsExceptSelected($("#left #navigation")).hide();

	// blende die Pfleile ein
	$("a.selected").parents("li").children("ul:first").parents("li").children("a").children("img.navi").show();

	// zeige die Navigation an (im css ausgeblendet)
	$("#left #navigation").show();

	// ==============================================================
	// runde Ecken
	$("#left a:first").corner("top 5px");
	$("#contentHeadline").corner("top 5px");
	$("div.searchHeadline").corner("top 5px");
	//$("div.newsArticle").corner("top 5px");

	// ==============================================================
	// linke navi: MouseOver
	$('#left a.navi').mouseover(function () {
		if (timerNaviToDefault != null) clearTimeout(timerNaviToDefault);
		$(this).addClass("toShow");

		var sender = $(this);
		setTimeout(function () {
			if (!$(sender).hasClass("toShow")) return;

			var ulToShow = $(sender).siblings("ul");
			var imgToShow = $(sender).children("img.navi:not(:visible)");

			// gibt es kein ul zum ausklappen oder ist schon ausgeklappt, wird abgebrochen
			if (ulToShow.length == 0 || $(imgToShow).length == 0) return;

			// verstecke alles, außer den Weg nach oben und den selektierten Pfad
			$(sender).parentsUntil("#navigation").siblings().each(function () {
				GetULsExceptSelected($(this)).each(function () {
					$(this).siblings("a.navi").children("img.navi").hide(); // blende den Pfeil der gleiche Ebene wie einzuklappendes UL
					$(this).find("img.navi").hide(); // blende die Pfeile der Unterpunkte aus
					$(this).slideUp(naviSpeed);
				});
			});

			// blende den Pfeil ein
			$(imgToShow).show();

			// Show Children of Selected
			ulToShow.slideDown(naviSpeed);
		}, 200);
	});

	// ==============================================================
	// linke navi: MouseOut
	$('#left a.navi').mouseout(function () {
		if (timerNaviToDefault != null) clearTimeout(timerNaviToDefault);
		$(this).removeClass("toShow");
		timerNaviToDefault = setTimeout(function () {
			// SetNaviToDefault
			GetULsExceptSelected($("#left #navigation")).each(function () {
				$(this).siblings("a.navi").children("img.navi").hide(); // blende den Pfeil der gleiche Ebene wie einzuklappendes UL
				$(this).find("img.navi").hide(); // blende die Pfeile der Unterpunkte aus
				$(this).slideUp(naviSpeed);
			});
		}, 3000);
	});

	// allgemeine Navi: MouseOver
	$('a.navi').mouseover(function () {
		// zeige AdminButtons
		var divAdminButtons = $(this).next("div.naviAdminButtons")
		if ($(divAdminButtons).length == 0) return;

		$(divAdminButtons).removeClass("toHide");
		$(divAdminButtons).show();
	});

	// allgemeine Navi: MouseOut
	$('a.navi').mouseout(function () {
		// verstecke AdminButtons
		var divAdminButtons = $(this).next("div.naviAdminButtons")
		if ($(divAdminButtons).length == 0) return;

		$(divAdminButtons).addClass("toHide");
		DelayedHideNaviAdminButtons($(divAdminButtons));
	});

	// AdminButtons MouseOver
	$('div.naviAdminButtons').mouseover(function () {
		$(this).removeClass("toHide");
	});

	// AdminButtons MouseOut
	$('div.naviAdminButtons').mouseout(function () {
		$(this).addClass("toHide");
		DelayedHideNaviAdminButtons($(this));
	});


	// ==============================================================
	// Details
	$("div.details").each(function () {
		$(this).hide();
	});

	$(".articleExpander").click(function () {
		$("div.details").slideUp("slow", function () {
			$(this).next(".articleExpander").fadeIn("fast");
		});
		var expander = $(this);
		$(this).prev("div.details").slideDown("slow", function () {
			expander.fadeOut("fast");
		});
	});

	// ==============================================================
	// Suchbox
	$("#searchBox").click(function () {
		$(this).attr("value", "");
	});

	// Bildergallerie
	$("div.gallery").each(function () {
		$(this).find("a").lightBox();
	})

	// zeige die Lupe
	$("div.gallery a").mouseover(function () {
		$(this).children("img.lupe").show();
	});

	// verstecke die Lupe
	$("div.gallery a").mouseout(function () {
		$(this).children("img.lupe").hide();
	});


	// Wurde ein Image Changer verwendet, wird die Headlinebreite und die Position der News danach ausgerichtet
	// es wird davon ausgegangen, dass alle Bilder im CHanger gleich groß sind
	var hiddenImg = $("div.imgChanger:first img.hidden");
	if (hiddenImg.length > 0) {
		var width = $(hiddenImg).width();
		if (width > 550) {
			$("#contentHeadline").width(width);
			$("#contentRight").css("top", $(".imgChanger:first").offset().top + $(hiddenImg).height() + 15);
		}
	}

	// blende in jedem ImageChanger	das jeweils 1. Bild ein
	$("div.imgChanger").each(function () {
		$(this).children("img:first").show();
	});
	
	// starte den verzögerten Bildwechsel
	ChangeImagesDelayed();


});

$(window).load(function () {
});

function GetULsExceptSelected(obj) {
	var idxToRemove = new Array();

    // 1. suche alle UL
	var objs = $(obj).find("ul");

    // 2. suche jene, die a.selected als Kind oder in gleicher Ebene haben 
	for (var i = 0; i < objs.length; i++) {
		if ($(objs[i]).find("a.selected").length > 0 || $(objs[i]).siblings("a.selected").length > 0) {
		    idxToRemove.push(i);
		}
	}

    // 3. entferne die gefunden Ausnahmen aus 2.
	for (var j = idxToRemove.length - 1; j >= 0; j--) {
		objs.splice(idxToRemove[j], 1);
	}
	return objs;
}

function DelayedHideNaviAdminButtons(obj) {
	setTimeout(function () {
		if (!$(obj).hasClass("toHide")) return;
		$(obj).hide();
	}, 50);
}

function ChangeImagesDelayed() {
	window.setTimeout("ChangeImages()", 10000);
}

function ChangeImages() {
	var speed = 2000;
	$("div.imgChanger").each(function () {
		var imgChanger = $(this);

		// wenn nur 1 Bild vorhanden ist, wird nichts umgeblendet
		if ($(imgChanger).children("img:not(.hidden)").length < 2) return;
		
		// suche das 1. sichtbare Bild
		$(imgChanger).children("img:not(.hidden):visible:first").each(function () {
			// blende das sichtbare Bild aus
			$(this).fadeOut(speed);

			// suche nächstes Bild
			var nextImgToShow = $(this).next("img:not(.hidden)");
			if ($(nextImgToShow).length == 0) {
				// zeige das erste Bild
				nextImgToShow = $(imgChanger).children("img:first");
			}
			$(nextImgToShow).fadeIn(speed);
		});
	});
	ChangeImagesDelayed();
}
