//var movement = true;
var lasthash = "";
var basetitle = "";
var window_loaded = false;
var scrollpane = false; 

swfobject.embedSWF("elements/painter_b.swf", "bg_swf", "100%", "100%", "9.0.0", false, {}, {"wmode" : "transparent", "bgcolor" : "#000000", "scale" : "noborder", "quality" : "low" });

$(function() {
	//$("#container").append("<div id=\"infobox\">test</div>");
	basetitle = document.title;
	hashdisplay();
	$("#container").append("<div id=\"tooltip\"><span class=\"pointer\"></span><span class=\"desc\"></span></div>");
	$(".area a").externalify();
	$(".area .slides img").preload({
    	find: '_sw.jpg',
    	replace: '.jpg'
	});
	
	/*Safari Browsers execute Javascripts too fast; Scrollpane can't initialize*/
	$(window).bind('load',function() {
  		if ($.browser.safari) {
		window_loaded = true;
		if (scrollpane == true) {
			$(".active .textbox").jScrollPane();
			scrollpane = false;
			}
		}
	});
	
	/*Tooltips*/
	$("[title]").each(function() {
		$(this).attr("tooltip",$(this).attr("title")).removeAttr("title"); //disable standard browser tooltips
	 });
	
	$("a[tooltip], span[tooltip], img[tooltip]").bind("mouseenter", function(){
		$("#tooltip .desc").html($(this).attr("tooltip"));
		$("#tooltip").show();
	});
	
	$("a[tooltip], span[tooltip], img[tooltip]").bind("mouseleave", function(){
		$("#tooltip").hide();
	});
	
	$("a[tooltip], span[tooltip], img[tooltip]").bind("mousemove", function(e){
		$("#tooltip").css("left",e.clientX).css("top",e.clientY);
	});
	
	/*Menu Effect*/
	$("ul#nav").append("<li id=\"marker\"></li>");
	movemarker($("#nav .active"),0);
	
	$("#nav").mouseleave(function() {
		movemarker($("#nav .active"),500);
	});
	
	$("#nav a, #nav .active").mouseenter( function() {
		 movemarker($(this), 300);
	});
	
	function movemarker(zielobjekt, speed) {
	$("#marker").stop();
	$("#marker").animate( { "left" : $(zielobjekt).offset().left, "width" : $(zielobjekt).width() }, speed);

	}
	
	/*Slideshow*/
	$(".area .slides img").each(function(){
		if ($(this).attr("src").search(/_sw.jpg/)!=-1) {
			$(this).attr("preview", $(this).attr("src")); //displayed image is a preview, store path
		}
		$(this).attr("original", $(this).attr("src").replace("_sw.jpg",".jpg"));
	});
	
	$(".area .slides img").click(function(e) {
		/*move Slideshow*/
		var myaim = Math.round($(this).parents(".area").width()/2);
		var mypos =  $(this).position();
		var mycenter = Math.round($(this).width()/2);
		var mydist = myaim-(mypos.left+mycenter);
		
		/*get margin difference from earlierer scrolls*/
		var mymargin = parseInt($(".slides").css("margin-left").replace("px",""));
		
		/*scroll*/
		$(".slides").animate({marginLeft : mymargin+mydist});
		
		/*remove active classes*/
		var display_new = $(this);
		var display_old = $(".slides .display");
		
		if (($(display_old).length) && ($(display_new).attr("original")!=$(display_old).attr("original"))) {
			if ($(display_old).attr("preview")) {$(display_old).attr("src", $(display_old).attr("preview"));}
			$(display_old).removeClass("display");
		}
		
		/*fixate this*/
		$(display_new).addClass("display");
	});
	
	$(".area .slides img").mouseenter(function() {
		$(this).attr("src", $(this).attr("original")).addClass("preview");
	});
	
	$(".area .slides img").mouseleave(function() {
		$(this).removeClass("preview");
		if ((!$(this).hasClass("display"))&&($(this).attr("preview"))) {
	   		$(this).attr("src", $(this).attr("preview"));
		}
	});
		
});

function stripHtml(str) {
	//supercool function provided by Steven Levithan at
	//http://blog.stevenlevithan.com/archives/reverse-recursive-pattern
	
	//while (str != (str = str.replace(/<(\w+)[^>]*>((?:(?!<\/?\1\b[^>]*>)[\S\s])*)<\/\1>/g, "$2"))); //clears all nested tags
	str = str.replace(/<[^>]+>/g, "").replace(/\s\s/g, "");//clears all content in <*> and all extra whitespace
	return str;
}

function titelneu(bereich) {
	/*liest Titel des aktuellen Bereichs aus der ersten �berschrift des Bereichs*/
	if ((bereich != "")&&($("#"+bereich+" h2").length)) {
		bereichstitel = basetitle+" "+String.fromCharCode(8211)+" "+stripHtml($("#"+bereich+" h2").html());
		if ($("#"+bereich+" h3").length) {bereichstitel = bereichstitel+" "+String.fromCharCode(8211)+" "+stripHtml($("#"+bereich+" h3").html())}
	} else {bereichstitel = basetitle ;}
	
	/*pa�t den Browsertitel an Bereichstitel an*/
	document.title = bereichstitel;
}

function aktivenavi(karte_neu) {
	if ($("#nav .active").length) {
		$("#nav .active").removeClass("active");
	}
	
	//ersetzt neuen Bereichslink durch Platzhalter
	if (karte_neu) {
		$("ul#nav li a[href=\"#"+karte_neu+"\"]").addClass("active");
	} 
	
	//movemarker($("#nav .aktiv"), 300);
}

function bereichsanzeige(karte_neu, karte_alt) {
	//if ((!karte_alt)&&($("#nav .aktiv").length)) {karte_alt = $("#nav .aktiv").attr("id").substr(4); }
	//$("#status").html(karte_neu+", davor: "+karte_alt);
	titelneu(karte_neu);
	//if ($("#nav li a[href=\"#"+karte_neu+"\"]").length) {aktivenavi(karte_neu, karte_alt);}
	
	aktivenavi(karte_neu);
	if (karte_alt != ""){
		var kartenbreite = $("#container").width(); //hm, noch falscher Offset (wg. Paddings)
		$("#"+karte_alt).stop().removeClass("active").css({ marginLeft : 0 });
		$("#"+karte_neu).stop().css({left: kartenbreite, marginLeft : 0 }).addClass("active").show();
		$(".active .content, .active h2 small").hide();
		$("#"+karte_neu).animate({ marginLeft: -(kartenbreite) }, function(){
			$("#"+karte_neu).css({left: 0 , marginLeft : 0 });
			$("#"+karte_alt).hide();
			$(".active h2 small").slideDown(150);
			$(".active .content").fadeIn(300);
			
			$(".active .textbox").jScrollPane();
		});
	} else {
		$(".area.active").hide().removeClass("active");
		$("#"+karte_neu).css({left: 0, marginLeft: 0 }).addClass("active").show();
		if ($.browser.safari) {
			if (window_loaded==true) {
			$(".active .textbox").jScrollPane();
		} else {scrollpane = true;}
		} else 
		{$(".active .textbox").jScrollPane();}
	}
	//$(".active .textbox").jScrollPane();


}

function aktiveranker() {
	/*gibt aktiven Anker aus der Adre�leiste aus*/
	anker = window.location.hash.slice(1);
	if (anker == "") {
		if (!$("#home").length) {
			anker = $(".area:first").attr("id");
		} else {
		anker = "home";
		}
	}
	
	//hier w�re noch ein Abgleich mit den tats�chlich existierenden Karten hilfreich
	return (anker);
}


function hashcheck() {
	/*pr�ft 20mal in der Sekunde, ob sich der Anker ver�ndert hat, ruft Wechselscript auf*/
	if (lasthash != aktiveranker()) {
		bereichsanzeige(aktiveranker(), lasthash);
		lasthash=aktiveranker();}
	window.setTimeout('hashcheck()', 50);
	
}

function hashdisplay() {
	/*das Objekt der aktiven Anker-ID wird angezeigt*/
	bereichsanzeige(aktiveranker(), "");
	
	/*initialisiert die regelm��ige Abfrage des Ankers*/
	lasthash=aktiveranker();
	window.setTimeout('hashcheck()', 50);
}