$(document).ready(function(){

/**
*
* @SETUP
*
**/

	/* HEADER */
	var headerCycleSpeed = 15000;
	var headerFadeSpeed = 1000;
	var headerImages = 8;
	var headerCurrent = 0;

	/* TICKER */
	var tickerScrollSpeed = 400;
	var tickerCurrentlyShowing = 1;

	/* PORTLETS */
	var verwaltungVisible = false;
	var verwaltungVisibleSub = "";
	var socialVisible = false;
	var toolsVisible = false;
	var searchVisible = false;

	var verwaltungOriginalSize;
	var verwaltungExpandedSize;
	
	var socialOriginalSize;
	var toolsOriginalSize;
	var searchOriginalSize;

	/* TABLES */
	var scrolling = false;
	var dragging = false;



/**
*
* @GO
*
**/

	init();
	
	
	
	
	
/**
*
* @EVENT LISTENERS
*
**/
	
	$("#portletVerwaltungToggle").click(function(event) { toggleVerwaltung(event.target.id);	} );
	$("#portletVerwaltungLetters a").click(function(event) { toggleVerwaltungSub(event.target.id);	} );

	$("#nav li.levelZero").each( function() {	$(this).hover( function(event) { showSubNav(event.target.id); }, function() { hideSubNav(); } );		});
	$("#tickerUp").click(function(event) { scrollTicker("up");	} );
	$("#tickerDown").click(function(event) { scrollTicker("down");	} );
	$("#tickerTop").click(function(event) { scrollTicker("top");	} );

	$("#portletSocialToggle").click(function(event) { toggleSocial();	} );
	$("#portletToolsToggle").click(function(event) { toggleTools();	} );
	$("#searchSectionToggle").click(function(event) { toggleSearchSection();	} );

	$("#backButton").hover( function(event) { backButtonHover(); }, function() { backButtonIdle(); } );

	$("#pictureNav a").hover( function(event) { pictureNavHover(); }, function() { pictureNavIdle(); } );

	$("#portletPrint a").click( function(event) { print(); } );

	$("#scaleFontMed").click( function(event) { setBaseFontSize('smallText',1); } );
	$("#scaleFontLarge").click( function(event) { setBaseFontSize('largeText',1); } );
	$("#scaleFontInverse").click( function(event) { setBaseFontSize('invert',1); } );
	$("#scaleFontMonochrome").click( function(event) { setBaseFontSize('mono',1); } );
	$("#scaleFontNormal").click( function(event) { setBaseFontSize('',1); } );

	$("body").mousedown(function() { dragging = true; });
	$("body").mouseup(function() { dragging = false; });


/**
* @FANCYBOX
**/

	$("#parent-fieldname-image").fancybox({
		'transitionIn'		: 'fade',
		'transitionOut'		: 'fade',
		'titlePosition' 	: 'over',
		'type'  		: 'image',
		'titleFormat'       : function(title, currentArray, currentIndex, currentOpts) {
		    return '<span id="fancybox-title-over">' + title + '</span>';
		}
	});

	$("a[rel=lightbox]").fancybox({
		'transitionIn'		: 'fade',
		'transitionOut'		: 'fade',
		'titlePosition' 	: 'over',
		'type'  		: 'image',
		'titleFormat'       : function(title, currentArray, currentIndex, currentOpts) {
		return '<span id="fancybox-title-over">' + title + '</span>';
		}
	});

	$("a[rel=bildergalerie]").fancybox({
		'transitionIn'		: 'fade',
		'transitionOut'		: 'fade',
		'titlePosition' 	: 'over',
		'type'  		: 'image',
		'titleFormat'       : function(title, currentArray, currentIndex, currentOpts) {
		return '<span id="fancybox-title-over">' + title + '</span>';
		}
	});


/**
* @TABLES
**/

$("table").delegate('tr','mouseover mouseleave', function(e) {
    if (!dragging) {
	$("body").mouseup(function() { dragging = false; });
		if (e.type == 'mouseover') {
      $(this).addClass("hover");
      $("colgroup").eq($(this).index()).addClass("hover");
    }
    else if (e.type == 'mouseleave') {
      /*$(this).parent().removeClass("hover");*/
      $("table tr").removeClass("hover");
      $("colgroup").eq($(this).index()).removeClass("hover");
    }
	} else {
      $("table tr").removeClass("hover");
      $("table td").removeClass("hover");
      $("table th").removeClass("hover");
	}
});




/**
*
* @METHODS
*
**/

		function init() {
			hideAll();
			fadeHeader();
			}
		
		function hideAll() {
			$("#portletVerwaltung ul").hide();
			$("#portletVerwaltung ul.sub").hide();
			$("#portletSocialList").hide();
			$("#portletToolsList").hide();
			$("#searchSectionInput").hide();
			$("#portlet-verwaltung ul.sub").hide();
			$("#portletVerwaltungLetters").hide();
			}

		
		
		
/**
*
* @HEADER CYCLING
*
**/
		
		function fadeHeader() {
			$("#headerCyclerOne").removeClass();
			if (headerCurrent < headerImages) { headerCurrent++; } else { headerCurrent = 0; }
			$("#headerCyclerOne").addClass("header" + headerCurrent);
			$("#headerCyclerTwo").delay(headerCycleSpeed).fadeOut(headerFadeSpeed, function() { showHeader(); });
			}
		function showHeader() {
			$("#headerCyclerTwo").removeClass();
			if (headerCurrent < headerImages) { headerCurrent++; } else { headerCurrent = 0; }
			$("#headerCyclerTwo").addClass("header" + headerCurrent);
			$("#headerCyclerTwo").delay(headerCycleSpeed).fadeIn(headerFadeSpeed, function() { fadeHeader(); });
			}
		

		
		
		
/**
*
* @BACK BUTTON ANIMATION
*
**/
		
function backButtonHover() {
	$("#backButton").animate({ marginLeft: '-=17px', width:'29px' }, 100);
	}		
		
function backButtonIdle() {
	$("#backButton").animate({ marginLeft: '+=17px', width:'12px' }, 100);
	}




		
		
		
/**
*
* @BACK BUTTON ANIMATION
*
**/
		
function pictureNavHover() {
	$("#backButton").animate({ marginLeft: '-=17px', width:'29px' }, 100);
	}		
		
function pictureNavIdle() {
	$("#backButton").animate({ marginLeft: '+=17px', width:'12px' }, 100);
	}




		
/**
*
* @TICKER ANIMATION
*
**/	

		function scrollTicker(direction) {
			var wrapLength = $("#tickerWrap").height();
			var tickerLength = $("#tickerScroller").height();
			var tickerMargin = $("#tickerScroller").css("margin-top").slice(0,-2);
			var tickerTotalCount = $("#tickerScroller").children(".tickerItem").length;
		
			if (direction == "up" && !scrolling) {
				if ( tickerCurrentlyShowing < tickerTotalCount) {
					scrolling = true;
					/*alert("current: " + tickerCurrentlyShowing + ", total: " + tickerTotalCount);*/
					/*alert("P:" + _p );*/
					var nextHeight = "-=" + $("#tickerScroller").children("div."+ tickerCurrentlyShowing).outerHeight(true) + "px";
					$("#tickerScroller").animate({ marginTop: nextHeight }, tickerScrollSpeed, function() { twiddleTickerButtons(); });
					tickerCurrentlyShowing++;
					}
				} else if (direction == "down" && !scrolling) {
				if ( tickerCurrentlyShowing > 1 ) {
				/*alert("current: " + tickerCurrentlyShowing + ", total: " + tickerTotalCount);*/
					scrolling = true;
					var nextHeight = "+=" + $("#tickerScroller").children("div."+ (tickerCurrentlyShowing - 1)).outerHeight(true) + "px";
					$("#tickerScroller").animate({ marginTop: nextHeight }, tickerScrollSpeed, function() { twiddleTickerButtons(); });
					tickerCurrentlyShowing--;
					}
				} else if (!scrolling) {
				if ( tickerCurrentlyShowing > 1 ) {
				/*alert("current: " + tickerCurrentlyShowing + ", total: " + tickerTotalCount);*/
					scrolling = true;
					var nextHeight = "+=" + $("#tickerScroller").children("div."+ (tickerCurrentlyShowing - 1)).outerHeight(true) + "px";
					$("#tickerScroller").animate({ marginTop: '0px' }, tickerScrollSpeed, function() { twiddleTickerButtons(); });
					tickerCurrentlyShowing = 1;
					}
				}
			}
		
		function twiddleTickerButtons() {
			scrolling = false;
			$("#tickerUp").removeClass();
			$("#tickerDown").removeClass();
			var wrapLength = $("#tickerWrap").height();
			var tickerLength = $("#tickerScroller").height();
			var tickerMargin = $("#tickerScroller").css("margin-top").slice(0,-2);
			if (tickerMargin < 0) {
				$("#tickerDown").removeClass();
				} else {
				$("#tickerDown").addClass("tickerIdle");
				}
			if (tickerMargin > -tickerLength + wrapLength) {
				$("#tickerUp").removeClass();
				} else {
				$("#tickerUp").addClass("tickerIdle");
				}
			}
		
		
		



		
/**
*
* @VERWALTUNGSPORTLET
*
**/
	
		
		function toggleVerwaltung(caller) {
			if (verwaltungVisible) {
				hideVerwaltung();
				} else {
				showVerwaltung();
				}
			}

		
		function showVerwaltung() {
			verwaltungOriginalSize = $("#portlet-verwaltung").css("height");
			verwaltungExpandedSize = ($("#portletVerwaltungLetters").outerHeight(true) + $("#portlet-verwaltung").outerHeight(true) + 50) + "px";
			$("#portlet-verwaltung").animate({
			height: verwaltungExpandedSize
			}, 400, function() {
				$("#portletVerwaltungToggle").addClass("active");
			});
			$("#portletVerwaltungLetters").fadeIn();
			verwaltungVisible = true;
			}		
		
		function hideVerwaltung() {
			$("#portletVerwaltungLetters").fadeOut();
			if (verwaltungVisibleSub) { 
				$("#"+verwaltungVisibleSub).fadeOut();
				var oldCallerReference = "letter" + verwaltungVisibleSub.charAt(verwaltungVisibleSub.length-1);
				$("#"+oldCallerReference).removeClass();
			}
			$("#portlet-verwaltung").animate({
			height: verwaltungOriginalSize
			}, 400, function() {
				$("#portletVerwaltungToggle").removeClass();
			});
			$("#portletVerwaltungLetters").fadeOut();
			verwaltungVisible = false;
			}		

		function toggleVerwaltungSub(caller) {
			var callerReference = "list" + caller.charAt(caller.length-1);
			if (verwaltungVisibleSub) {
				$("#"+verwaltungVisibleSub).fadeOut(300, function() { showVerwaltungSub(caller) });
				var oldCallerReference = "letter" + verwaltungVisibleSub.charAt(verwaltungVisibleSub.length-1);
				$("#"+oldCallerReference).removeClass();
				}  else {
				showVerwaltungSub(caller);
				}
			}
		
		function showVerwaltungSub(caller) {
			var callerReference = "list" + caller.charAt(caller.length-1);
			var portletSizeSub = $("#"+callerReference).height();
			$("#"+callerReference).fadeIn();
			verwaltungVisibleSub = callerReference;
			$("#"+caller).addClass("active");
			var portletExpandedSizeStrippd = parseInt(verwaltungExpandedSize.substring(0, verwaltungExpandedSize.length-2));
			var portletSizeSub = $("#"+callerReference).outerHeight(true);
			var portletEnlargeSub = portletExpandedSizeStrippd + portletSizeSub + 10 + "px";
			$("#portlet-verwaltung").animate({
				height: portletEnlargeSub
				}, 200, function() {
				// Animation complete.
				});
			}

		
		
			
/**
*
* @SOCIAL PORTLET
*
**/
		
		function toggleSocial(caller) {
			if (socialVisible) {
				hideSocial();
				} else {
				showSocial();
				}
			}		
		
		function showSocial() {
			socialOriginalSize = $("#portlet-social").css("height");
			var portletSize = ($("#portletSocialList").height() + 42) + "px";
			$("#portlet-social").animate({
			height: portletSize
			}, 400, function() {
				$("#portletSocialToggle").addClass("active");
			});
			$("#portletSocialList").fadeIn();
			socialVisible = true;
			}
				
		function hideSocial() {
			$("#portletSocialList").fadeOut();
			$("#portlet-social").animate({
			height: socialOriginalSize
			}, 400, function() {
				$("#portletSocialToggle").removeClass();
			});
			socialVisible = false;
			}

		
		
		
			
/**
*
* @TOOLS PORTLET
*
**/
		
		function toggleTools() {
			if (toolsVisible) {
				hideTools();
				} else {
				showTools();
				}
			}		
		
		function showTools() {
			toolsOriginalSize = $("#portlet-tools").css("height");
			var portletSize = ($("#portletToolsList").outerHeight(true) + 42) + "px";
			$("#portlet-tools").animate({
			height: portletSize			
			}, 400, function() {
				$("#portletToolsToggle").addClass("active");
			});
			$("#portletToolsList").fadeIn();
			toolsVisible = true;
			}
				
		function hideTools() {
			$("#portletToolsList").fadeOut();
			$("#portlet-tools").animate({
			height: toolsOriginalSize
			}, 400, function() {
				$("#portletToolsToggle").removeClass();
			});
			toolsVisible = false;
			}
		
		
		
		
		
			
/**
*
* @SEARCH PORTLET
*
**/
		
		function toggleSearchSection(caller) {
			if (searchVisible) {
				hideSearch();
				} else {
				showSearch();
				}
			}		
		
		function showSearch() {
			searchOriginalSize = $("div.searchSection").css("height");
			var portletSize = ($("div.searchSection").height() + 20) + "px";
			$("div.searchSection").animate({
			height: portletSize
			}, 400, function() {
				$("#searchSectionToggle").addClass("active");
				$("#searchSectionInput").addClass("active");
			});
			$("#searchSectionInput").fadeIn();
			searchVisible = true;
			}
				
		function hideSearch() {
			$("#searchSectionInput").fadeOut();
			$("div.searchSection").animate({
			height: searchOriginalSize
			}, 400, function() {
				$("#searchSectionToggle").removeClass();
				$("#searchSectionInput").removeClass();
			});
			searchVisible = false;
			}
		
		
});
