var hdl_scrollerTimeout = '';
var int_mouseWheelEvent = 0;

jQuery(document).ready(function() {
	var int_pageWidth = 1023;
	var int_currentPage = 0;

	// Numeration of each menu LI-elements
	jQuery("#menu li").each(function(i) {
		jQuery(this).addClass("pos_" + i);
	});
	
	// Handle Mainmenu behavior
	jQuery("#menu a").click(function() {
		if (! jQuery(this).parent().hasClass("current"))
		{
			// Animate fade in of new page
			int_offset = parseInt(jQuery(this).parent().attr("class").match(/pos_[0-9]?/, '')[0].replace(/pos_/, ""));
			jQuery("#pages").animate({
				left : "-" + (int_pageWidth * int_offset) + "px"
			}, 650);
			
			
			jQuery("#menu li.current a strong").remove();
			if (int_currentPage < int_offset)
			{
				jQuery("#menu li.current a").animate({
					backgroundPosition: "173px 0px"
				},650, "linear");
			}
			else
			{
				jQuery("#menu li.current a").animate({
					backgroundPosition: "-173px 0px"
				},650, "linear");
			}
			
			var obj_current = jQuery(this);
			if (int_currentPage > int_offset)
			{
				obj_current.animate({
					backgroundPosition: "173px 0px"
				}, 0, "linear", function() {
					obj_current.animate({
						backgroundPosition: "0px 0px"
					}, 650, "linear", function() {
						
						jQuery("#menu li.current").removeClass("current");
						obj_current.parent().addClass("current");
						obj_current.prepend("<strong>‣ </strong>");
					});
				});
			}
			else {
				obj_current.animate({
					backgroundPosition: "-173px 0px"
				}, 0, "linear", function() {
					obj_current.animate({
						backgroundPosition: "0px 0px"
					}, 650, "linear", function() {
						
						jQuery("#menu li.current").removeClass("current");
						obj_current.parent().addClass("current");
						obj_current.prepend("<strong>‣ </strong>");
					});
				});
			}
			
			
			int_currentPage = int_offset;
		}
		
		return false;
	});
	
	if (bol_animateStart) animateIntro();
	else loadAjaxPages();
});


function animateIntro() {
	// Build pattern
	jQuery("#layout").append("<div id='pattern_1' class='pattern'></div>" +
		"<div id='pattern_2' class='pattern'></div>" +
		"<div id='pattern_3' class='pattern'></div>" +
		"<div id='pattern_4' class='pattern'></div>" +
		"<div id='pattern_5' class='pattern'></div>" +
		"<div id='pattern_6' class='pattern'></div>" +
		"<div id='pattern_7' class='pattern'></div>" +
		"<div id='pattern_8' class='pattern'></div>" +
		"<div id='pattern_9' class='pattern'></div>" +
		"<div id='pattern_10' class='pattern'></div>" +
		"<div id='pattern_11' class='pattern'></div>" +
		"<div id='pattern_12' class='pattern'></div>" +
		"<div id='pattern_13' class='pattern'></div>" +
		"<div id='pattern_14' class='pattern'></div>" +
		"<div id='pattern_15' class='pattern'></div>" +
		"<div id='pattern_16' class='pattern'></div>" +
		"<div id='pattern_17' class='pattern'></div>" +
		"<div id='pattern_18' class='pattern'></div>" +
		"<div id='pattern_19' class='pattern'></div>" +
		"<div id='pattern_20' class='pattern'></div>" +
		"<div id='pattern_21' class='pattern'></div>" +
		"<div id='pattern_22' class='pattern'></div>" +
		"<div id='pattern_23' class='pattern'></div>" +
		"<div id='pattern_24' class='pattern'></div>" +
		"<div id='pattern_25' class='pattern'></div>");
	
	// Show random pattern
	var arr_patterns = new Array("pattern_1", "pattern_2", "pattern_3", "pattern_4", "pattern_5", "pattern_6",
															 "pattern_7", "pattern_8", "pattern_9", "pattern_10", "pattern_11", "pattern_12",
															 "pattern_13", "pattern_14", "pattern_15", "pattern_16", "pattern_17", "pattern_18",
															 "pattern_19", "pattern_20", "pattern_21", "pattern_22", "pattern_23", "pattern_24", "pattern_25");
	showPattern(Math.round((arr_patterns.length - 1) * Math.random()), arr_patterns);
}

function showPattern(int_pElement, arr_pPatterns) {
	jQuery("#" + arr_pPatterns[int_pElement]).fadeIn(3 * arr_pPatterns.length , function() {
		arr_pPatterns.splice(int_pElement, 1);
		
		if (arr_pPatterns.length > 0)
		{
			showPattern(Math.round((arr_pPatterns.length - 1) * Math.random()), arr_pPatterns);
		}
		else
		{
			showSideElements();
		}
	});
}

function showSideElements() {
	jQuery("#layout").css("border-color", "#faedda");
	jQuery("#logo").fadeIn(750);
	jQuery("#footer").fadeIn(450);
	jQuery("#menu").fadeIn(750);
	jQuery("#pages").fadeIn(1300);
	
	loadAjaxPages();
}


function loadAjaxPages() {
	var str_content = "";
	
	jQuery.ajax({
		type: "GET",
		url: "index.html",
		dataType: "html",
		success: function(str_pHtml) {
			obj_page = jQuery(str_pHtml);
			str_content += obj_page.find("#pages").html();	
			
			jQuery.ajax({
				type: "GET",
				url: "kontakt.html",
				dataType: "html",
				success: function(str_pHtml){
					obj_page = jQuery(str_pHtml);
					str_content += obj_page.find("#pages").html();
					
					jQuery.ajax({
						type: "GET",
						url: "impressum.html",
						dataType: "html",
						success: function(str_pHtml){
							obj_page = jQuery(str_pHtml);
							jQuery("#pages").html(str_content + obj_page.find("#pages").html());
							
							// Add scrollbars to startpage
							addScrollarea();
							
							// Reinitialize thickbox 
							tb_init('a.thickbox');
							
							// Include Google maps
							window.setTimeout("showGoogleMaps()", 1500);
						}
					});
				}
			});
		}
	});
}


function addScrollarea() {
  if (jQuery("#start div.viewport")[0])
	{
		// Add the draggable behaviour to main content text element.
		jQuery("#start div.viewport").draggable({ 
			axis: "y",
			cancel:"a",
			start:function(event, ui) {
				jQuery("#start div.scroller").stop();
				jQuery("#start div.scroller").animate({
					opacity:"0.35"
				}, 300);
			},
			drag:function(event, ui) {
				// Set bounding box
				if (ui.position.top < ((jQuery("#start div.viewport").height() - jQuery("#start div.scrollarea").height() + 20) * -1))
				{
					ui.position.top = (jQuery("#start div.viewport").height() - jQuery("#start div.scrollarea").height() + 20) * -1;
				}
				if (ui.position.top > 0)
				{
					ui.position.top = 0;
				}

				// Set scrollbar offset
				jQuery("#start div.scroller").css("top", parseInt(jQuery("#start div.scrollarea").height() * ((ui.position.top * -1) / (jQuery("#start div.viewport").height() + 20))));
			},
			stop:function(event, ui) {
			  /*
				jQuery("#start div.scroller").animate({
					opacity:"0"
				}, 1000);
				*/
			}
		});
	
		// Set virtuell scrollbar height
		jQuery("#start div.scroller").height(parseInt(jQuery("#start div.scrollarea").height() * (jQuery("#start div.scrollarea").height() / jQuery("#start div.viewport").height())) + "px");  

		// Fade out virtuell scrollbar on start
		/*
		jQuery("#start div.scroller").animate({
			opacity:"0"
		}, 6000);
		*/
		jQuery('#start div.viewport').mousewheel(function(event, delta) 
		{
			int_mouseWheelEvent += 1;
			
			if (int_mouseWheelEvent == 1)
			{
				// Fade in virtuell scrollbar on start
				jQuery("#start div.scroller").stop();
				jQuery("#start div.scroller").animate({
						opacity:"0.35"
				}, 300);
			}
			else if (int_mouseWheelEvent > 1)
			{
				window.clearTimeout(hdl_scrollerTimeout);
				hdl_scrollerTimeout = '';
			}
			
			int_scrollWidthMuliplicator = 7;
			
			// Calculate new top position
			int_top = parseInt(jQuery(this).css('top')) + Math.round(int_scrollWidthMuliplicator * delta);
			if (isNaN(int_top)) int_top = 0;
			
			// Consider bounding box
			if (int_top < ((jQuery("#start div.viewport").height() - jQuery("#start div.scrollarea").height() + 20) * -1))
			{
				int_top = (jQuery("#start div.viewport").height() - jQuery("#start div.scrollarea").height() + 20) * -1;
			}
			if (int_top > 0)
			{
				int_top = 0;
			}
			
			// Set new top value
			jQuery(this).css('top', int_top + 'px')
			
			// Set scrollbar offset
			jQuery("#start div.scroller").css("top", parseInt(jQuery("#start div.scrollarea").height() * ((int_top * -1) / (jQuery("#start div.viewport").height() + 20))));
			
			// Fade out scroller
			hdl_scrollerTimeout = window.setTimeout('fadeOutScroller()', 300);
			
			return false;
		});
	}
}

function fadeOutScroller() {
	if (hdl_scrollerTimeout != '')
	{
		window.clearTimeout(hdl_scrollerTimeout);
		/*
		// Fade out virtuell scrollbar on start
		jQuery("#start div.scroller").animate({
			opacity:"0"
		}, 3000);
		*/
		int_mouseWheelEvent = 0;
		hdl_scrollerTimeout = '';
	}
}

function showGoogleMaps() {
	var obj_mapStartPoint = new GLatLng(53.042297, 8.968835);
	var obj_infoLayer = new GLatLng(53.043226, 8.961427);
	var int_mapStartZoomLevel = 14;
	
	// Add Google Maps
	if (document.getElementById("googlemaps") && GBrowserIsCompatible())
	{
		// Create Google Maps view.
		map = new GMap2(document.getElementById("googlemaps"));
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl(), new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(6, 6)));
		map.setMapType(G_HYBRID_MAP);
		// map.addControl(new GOverviewMapControl(new GSize(200,160)));
		map.setCenter(obj_mapStartPoint, int_mapStartZoomLevel);
		
		// Create own marker icon.
		markerIcon = new GIcon();
		markerIcon.image = "img/marker.png";
		markerIcon.shadow = "img/marker_shadow.png";
		markerIcon.iconSize = new GSize(19, 16);
		markerIcon.shadowSize = new GSize(19, 16);
		markerIcon.iconAnchor = new GPoint(7, 16);
			
		markerOptions = {icon:markerIcon};
	
		// Set Info Marker to center position and bind 'onclick' function.
		obj_infoMarker = new GMarker(obj_infoLayer, markerOptions)
		GEvent.addListener(obj_infoMarker, "click", function() {
				
			// Transfer Adress field HTML into Info-Window.
			map.openInfoWindowHtml(obj_infoLayer, jQuery("#contact .adress").html() + jQuery("#contact .contact").html());
		});
		
		// Add marker to map
		map.addOverlay(obj_infoMarker);
	}
}

