/**
 * Hier werden Basisfunktionen bereitgestellt
 */
 
var basics = (function() {
	var IE6 = window.IE6 || false;
	
	function initWaves() {
		if(IE6)
			return;
			
		var setAbsolute = true;
		
		var waves = {
			green: $("#welle-gruen"),
			purple: $("#welle-lila")
		}
		var defaultPos = {
			green: parseInt(waves.green.css("top"), 10),
			purple: parseInt(waves.purple.css("top"), 10)
		}
		var threshold = $("#wrap").height() - 230 - 145; // 230 = padding von unten, 145 = höhe der welle
		
		$(window).bind("scroll", function() {
			
			if( ! setAbsolute) return;
			
			var offsetTop = waves.green.offset().top;
			
			if(offsetTop >= threshold) {
				if( ! waves.green.data("absolutized")) {
					waves.green
						.data("absolutized", true)
						.data("scrollTop", $(window).scrollTop())
						.css({
							'position': 'absolute',
							'top': threshold+'px'
						});
					
					waves.purple.css({
						'position': 'absolute',
						'top': (threshold - (defaultPos.green - defaultPos.purple)) +'px'
					});
				}
				else if(waves.green.data("scrollTop") > $(window).scrollTop()) {
					waves.green.data("absolutized", false).css({
						'position': 'fixed',
						'top': defaultPos.green+'px'
					});
					
					waves.purple.css({
						'position': 'fixed',
						'top': defaultPos.purple+'px'
					});
				}
			}
			
		});
		
		var optimize1024 = function() {
			if( $(window).width() < 1024 ) {
				setAbsolute = false;
			}
			else {
				setAbsolute = true;
			}
		};
		
		optimize1024();
		
		$(window).bind("resize", optimize1024);
	}
	
	function defaultText(ids) {
		var curInput;
		for(var i=0, len=ids.length; i<len; i++) {
			curInput = $("#"+ids[i]);
			if(curInput.length) {
				curInput
					.data("value", curInput.attr("value"))
					.focus(function() {
						if(curInput.data("value") === this.value)
							this.value = "";
					})
					.blur(function() {
						if(this.value === '')
							this.value = $(this).data("value");
					});
			}
		}
	}
	
	function replaceSubmitButton() {
		var buttons = $(".button:submit");
		
		if(buttons.length) {
			buttons.each(function() {
				var $this = $(this);
				var text = $this.val();
				
				$this
					.after("<a href=\"#\" title=\""+text+"\" class=\"with-arrow\">"+text+"</a>")
					.next()
					.click(function() {
						$("#contentbox form:first").submit();
						return false;
					})
					.end()
					.remove();
			});
		}
	}
	
	function initLightboxes() {
		
		var lightboxes = $(".lb-container");
		
		if( ! lightboxes.length)
			return;
		
		// welche funktionen sollen für das verstecken und zeigen benutzt werden?
		var anim = {
			show: "show",
			hide: "hide"
		}
		
		var viewportHeight = $(window).height();
		
		lightboxes.each(function() {
			var lightbox = $(this);
			var positionY = (viewportHeight - lightbox.height()) / 2;
			if(positionY < 0) positionY = 0;
			
			lightbox.css({
				"position": ((viewportHeight < lightbox.height() || IE6) ? "absolute" : "fixed"), // schalte nur auf fixed wenn der Bildschirm hoch genug ist!!
				"top": positionY+"px"
			});
		});
		
		// Links die auf eine Lightbox zeigen
		$(".lightbox").click(function() {
			var id = $(this).attr("href");
			var lightbox = $(id);
			
			if( ! lightbox.is(":visible")) {
				lightbox[anim.show]("normal");
			}
			
			if(lightbox.css("position") === "absolute")
				window.scrollTo(0, lightbox.css("top"));
			
			return false;
		});
		
		// Schließen Link
		$("a.lb-close", lightboxes).click(function() {
			var container = $(this).parent();
			
			if(container.is(":visible")) {
				container[anim.hide]("normal");
			}
			
			return false;
		});
	}
	
	return {
		initWaves: initWaves,
		defaultText: defaultText,
		replaceSubmit: replaceSubmitButton,
		initLightboxes: initLightboxes
	};
	
})();

/* ----------------------------------------------------------------- */
	
$(window).load(function() {

	basics.initWaves();
	basics.initLightboxes();
	
});
 
$(function() {
	
	basics.defaultText([
		"q"
	]);
	
});