var allCategories = "#categories>ul>li>div";

$(document).ready(
	function() {
		makeEntryDescStrongToComma();
		showSomeBlogEntries(false);
		showSingleEntry();
		reformatAllDates();
		refreshCategoryInfo();
		registerEvents();
	}
);

function makeEntryDescStrongToComma() {
	$(".projekt>.desc").each(function(){
		var d = $(this).html( "<strong>" + $(this).html().replace(", ", "</strong> ") );
	});
	
}

function showSomeBlogEntries(slide) {
	$(".post:hidden").each(function(e){
		if(e<5) {
			if(slide) $(this).hide();
			$(this).removeClass("hidden");
			
			var bid = $(this).attr("id");
			$("#"+bid+">.cont>div>ol>li.slide").each(function(e){
				var loaded = $(this).hasClass("loaded");
				if(!loaded) {
					$(this).addClass("loaded");
					var c = $("#"+bid+">.cont>div>ol>li.slide").length;
					if(c>1) $(this).addClass("button");
					var imgNumber = "<div class='imgno'>Bild "+(c-e)+"/"+c+" </div>";
					if(c<=1) imgNumber = "<br>";
					$(this).html(imgNumber+"<img src='"+$(this).html()+"' style='"+$(this).attr("style")+"'/>");
				}
			});
			
			var last = $("#"+bid+">.cont>div>ol>li.slide").last();
			if(last.hasClass("loaded")) { last.removeClass("hidden"); }
			
			if(slide) $(this).slideDown("fast");
		}
	});
	if($(".post:hidden").length == 0) {
		$("#more").hide();
	}
}

function showSingleEntry() {
	if($(".single-entry").length == 1) {
		var pid = $(".single-entry>article>.projekt").first().attr("id");
		showProject(pid, true);
	}
}

function reformatAllDates() {
	$(".date").each(function(){
		var d = dateFormat( $(this).html(), "dd. mmmm yyyy");
		$(this).html(d);
	});
}

function refreshCategoryInfo() {
	$(allCategories).each(function(){
		var cid = $(this).html().replace(",","").replace(" ","-"); // todo: .lowercase()
		var count = $("."+cid).length;
		if(count > 0 ) {
			var ap = $(this).parent().html() + "<div class='info hidden'> ("+count+")</div>";
			$(this).parent().html(ap);
		}
	});
}

function registerEvents() {
	
	$("#categories>ul>li").click(function () {
		$(this).addClass("touched");
		
		// hide all but clicked
		$(allCategories+".selected").each(function(){
			var wasTouched = $(this).parent().hasClass("touched");
			if(!wasTouched) {
				var cid = $(this).html();
				highlightCategory(cid, false);
				$(this).removeClass("selected");
			}
		});
		
		var cid = $(this).children("div").first().html();
		var doShow = !$(this).children("div").first().hasClass("selected");
		highlightCategory(cid, doShow);
		if(doShow) {
			$(this).children("div").first().addClass("selected");
		} else {
			$(this).children("div").first().removeClass("selected");
		}
		
		$(this).removeClass("touched");
	});
	
	$("#categories>ul>li").hover(function(){
		$(this).children(".info").removeClass("hidden");
	}, function(){
		$(this).children(".info").addClass("hidden");
	});
	
	$(".show-about").click(function () {
		var isVisible = $(".about").first().is(":visible");
		if(isVisible) {
			$(".about").fadeToggle("normal", function() {
				var isVisible = $(".not-about").first().is(":visible");
				if(!isVisible) $(".not-about").fadeToggle();
			});
		} else {
			$(".not-about").fadeToggle("normal", function() {
				var isVisible = $(".not-about").first().is(":visible");
				if(!isVisible) $(".about").fadeToggle();
			});
		}
	});
	
	$("#show-imprint").click(function () {
		$("#office").fadeToggle("normal", function() {
			$("#imprint").fadeToggle();
		});
	});
	
	$("#show-office").click(function () {
		$("#imprint").fadeToggle("normal", function() {
			$("#office").fadeToggle();
		});
	});
	
	$(".show-projekte, .show-blog").click(function () {
		var anchor = $(this).children("a").attr("href");
		window.location = anchor;
	});
	
	$("#open-projects").click(function () {
		$(allCategories).each(function(){
			var cid = $(this).html();
			var isSelected = $(this).hasClass("selected");
			showCategory(cid, isSelected);
		});
	});
	
	$("#close-projects").click(function () {
		$(allCategories).each(function(){
			var cid = $(this).html();
			showCategory(cid, false);
		});
	});
	
	$("div.desc").click(function () {
		var pid = $(this).parent().attr("id");
		toggleProject(pid);
		// todo: move focus of scrolling
	});
	
	$("div.desc").hover(
		function (){
			var pid = $(this).parent().attr("id");
			var isHighlighted = $("#"+pid).hasClass("highlight");
			if(!isHighlighted) highlightProject(pid, true);
	}, 	function (){
			var pid = $(this).parent().attr("id");
			var isHighlighted = $("#"+pid).hasClass("highlight");
			if(!isHighlighted) highlightProject(pid, false);
	});
	
	$(".slide").click(function(){
		var len = $(this).siblings().length;
		if(len == 0) return;
		$(this).fadeOut("fast", function(){
			if($(this).prev(".slide").length == 0) { // loop
				$(this).parent().children(".slide:last").removeClass("hidden");
				$(this).parent().children(".slide:last").show();
			} else {
				$(this).prev().removeClass("hidden");
				$(this).prev().fadeIn("fast");
			}
		});
	});
	
	$("#more").click(function(){
		showSomeBlogEntries(true);
	});
	
	$(window).scroll(function(){
		var yLeftToGo = document.height - (window.pageYOffset + window.innerHeight);
		if(yLeftToGo <= 0) {
			showSomeBlogEntries(true);
		}
	});
}

function highlightCategory(cid, doShow) {
	var cid = cid.replace(",","").replace(" ","-"); // todo: .lowercase()
	$("."+cid).each(function() {
		var pid = $(this).attr("id");
		highlightProject(pid, doShow);
		if(doShow) { 
			$("#"+pid).addClass("highlight");
		} else {
			$("#"+pid).removeClass("highlight");
		}
	});
}

function showCategory(cid, doShow) {
	var cid = cid.replace(",","").replace(" ","-"); // todo: .lowercase()
	$("."+cid).each(function() {
		var pid = $(this).attr("id");
		showProject(pid, doShow);
	});
}

function toggleProject(pid) {
	var doShow = !($("#"+pid).children("div.cont").is(":visible"));
	showProject(pid, doShow);
	return doShow;
}

function showProject(pid, doShow) {
	if(pid == undefined || pid.indexOf("bid_") != -1) return; // not in blog
	
	if(doShow) {
		var isHighlighted = $("#"+pid).hasClass("highlight");
		if(isHighlighted) highlightProject(pid, false);
		
		$("#"+pid+">.cont>div>ol>li.slide").each(function(e){
			var loaded = $(this).hasClass("loaded");
			if(!loaded) {
				$(this).addClass("loaded");
				var c = $("#"+pid+">.cont>div>ol>li.slide").length;
				if(c>1) $(this).addClass("button");
				var imgNumber = "<div class='imgno'>Bild "+(c-e)+"/"+c+" </div>";
				if(c<=1) imgNumber = "<br>";
				$(this).html(imgNumber+"<img src='"+$(this).html()+"' style='"+$(this).attr("style")+"'/>");
			}
		});
		
		var last = $("#"+pid+">.cont>div>ol>li.slide").last();
		if(last.hasClass("loaded")) {
			last.removeClass("hidden");
		}
		
		$("#"+pid).children("div.cont").slideDown();
	} else {
		$("#"+pid).children("div.cont").slideUp();
		var isHighlighted = $("#"+pid).hasClass("highlight");
		if(isHighlighted) highlightProject(pid, true);
	}
}

function highlightProject(pid, doHighlight) {
	if(pid.indexOf("bid_") != -1) return; // not in blog
	
	var thumb = $("#"+pid).children("div.thumb").html();
	if(doHighlight) {
		$("#"+pid).children("div.desc").attr("style","background-image:url("+thumb+"); background-repeat:no-repeat; background-position:left;");
	} else {
		$("#"+pid).children("div.desc").attr("style","");
	}
}
