
jQuery.noConflict();
jQuery(function(){
	
	jQuery("html").addClass("jsactive");
	var windowHeight = Number( jQuery(window).height() );
	var windowWidth = Number ( jQuery(window).width() );
	
	var fricklrCookies = jQuery.cookie('fricklr_enabled');
	if (fricklrCookies === null || fricklrCookies === undefined) {
		// defaultwerte wenn js aktiviert ist
		jQuery.cookie('fricklr_enabled', 'true', { path: '/', expires: 14 });
		jQuery.cookie('fricklr_naviPosition_x', "50px", { path: '/', expires: 14 });
		jQuery.cookie('fricklr_naviPosition_y', "80%", { path: '/', expires: 14 });
		jQuery.cookie('fricklr_visited_posts', "null", { path: '/', expires: 14 });
	}
	

	
	var navi_div = jQuery("#navi");
	var navi_li = jQuery("#navi li.page_item");
	var navi_a = jQuery("#navi li.page_item a");
	var cloud_div = jQuery("#cloud");
	var taglines_div = jQuery("#taglines");
	
	// ! copy #cloud content into #taglines
	var copyCloud = function() {
		taglines_div.html(cloud_div.html());
	};
	//copyCloud();
	
	// ! preprocess visited posts from cookie info
	var visitedPost = jQuery.cookie('fricklr_visited_posts');
	if (visitedPost != "null") {
		visitedPost = visitedPost.split(".");
		for (var i = 1; i <= visitedPost.length; i++) {
			var visitedPostClass = "."+visitedPost[i];
			// adds visited to #cloud & #taglines
			jQuery(visitedPostClass).addClass("visited");
		}
	}



	// ! NAVI
 	var naviTop = jQuery.cookie('fricklr_naviPosition_y');
	var naviLeft = jQuery.cookie('fricklr_naviPosition_x');
	
	
	navi_div.css({
		left: naviLeft,
		top: naviTop,
		visibility: "visible"
	});
		
	navi_div.draggable({
		stop: function() {
			jQuery.cookie('fricklr_naviPosition_x', jQuery(this).css("left"), { path: '/', expires: 14 });
			jQuery.cookie('fricklr_naviPosition_y', jQuery(this).css("top"), { path: '/', expires: 14 });
		}
	});
	
	navi_a.click(function(){
		var thisHref = jQuery(this).attr("href");
		
		cloudTransform(thisHref);
		
		loadPostText(jQuery(this));
		
		navi_li.each(function() {
			jQuery(this).toggleClass("current_page_item");
		});
				
		return false;
		
	});
	
	var cloudTransform = function(link) {
		var toLoad = link + " #cloudwrapper";
		jQuery("#taglines").css("opacity","0");
		// load cloud
		jQuery("#copycloud").load(toLoad, function() {
			jQuery("#copycloud li").each(function(i){
			  var tagTop = jQuery(this).css("top");
			  var tagLeft = jQuery(this).css("left");
			  //console.log(tagTop);
			  jQuery("#cloud li:eq("+i+")").stop().animate({
			      top: tagTop,
			      left: tagLeft
			  	},
			  	3000, 
			  	function() {
			  		jQuery("#taglines").stop().animate({opacity: 1}, 1000);
			  });
			});
		});
		
		// transform
	};
	
	// ! CLOUD
	var tag_li = jQuery("#cloud .tag");
	var tag_a = jQuery("#cloud .tag a");
	
	tag_a.each(function(){
		jQuery(this).attr("title","");
	});
	
	// set to inline styles for cloudTransform() to play nice
	tag_li.each(function(){
		var thisTop = jQuery(this).css("top");
		var thisLeft = jQuery(this).css("left");
		jQuery(this).css({
			top: thisTop,
			left: thisLeft
		});
	});
	
	var loadPostText = function(elem) {
		var thisHref = elem.attr("href");
		var thisHrefLoadText = thisHref + " #navi .post ";
		jQuery("#navi .postwrapper").load(thisHrefLoadText, function() {
			resetNaviPosition();
		});
	};

	var	mouseY = 0; // = window.event.screenY;
	var mouseX = 0; // = window.event.screenX;

	var loadSinglePost = function(elem) {
		// ajax
		var thisHref = elem.attr("href");
		
		
		//console.log(thisHref);
		var thisHrefLoadText = thisHref + " #navi .post ";
		var thisHrefLoadMedia = thisHref + " #lightboxwrapper";
		
		jQuery("#navi .postwrapper").load(thisHrefLoadText, function() {
			resetNaviPosition();
		});
		
		// ! LIGHTBOX
		var floatLightboxNavi = "<div id='lightboxnavi'><span class='prev'><a href='#before'></a></span><span class='next'><a href='#next'></a></span><span class='close'><a href='#close' title='close'></a></span><div class='counter'></div></div>";

		jQuery("body").addClass("loading");



		jQuery("#lightbox").load(thisHrefLoadMedia, function() {
			
			var naviCounterActual = "1";
			var naviCounterTotal = "";
			
			var setCounter = function() {
				jQuery("#lightboxnavi .counter").html(naviCounterActual+naviCounterTotal);
			}

			// ! Active area for the mousemove
			jQuery("#lightbox ul").prepend("<li class='navimove'></li>");
			
			// ! centering the li-items
			jQuery("#lightbox ul li").each(function(i){
				var thisHeight = jQuery(this).height();
				var thisWidth = jQuery(this).width();
				if (i !== 0) {
					naviCounterTotal = "/"+i;
					if (i == 1) {
						jQuery(this).css({
							top: (windowHeight-thisHeight)/2,
							zIndex: 2600+i
						}).animate({
							left: (windowWidth-thisWidth)/2
						}, 500);
					} else {
						jQuery(this).css({
							left: (windowWidth-thisWidth)/2,
							top: (windowHeight-thisHeight)/2,
							zIndex: 2600+i
						});
					}		
				}
								
			}).eq(1).addClass("active");
			

			jQuery("#lightbox").prepend(floatLightboxNavi);
			setCounter();

			// ! this makes lightboxnavi follow the cursor
			var followme = function() {
				var oldTop = jQuery("#lightboxnavi").css("top").split("px");
				var oldLeft = jQuery("#lightboxnavi").css("left").split("px");
				
				var difTop = oldTop[0]-mouseY;
				var neuTop = oldTop[0]-(difTop/6);
				
				var difLeft = oldLeft[0]-mouseX;
				var neuLeft = oldLeft[0]-(difLeft/6);			
				
				jQuery("#lightboxnavi").css({
				  top: neuTop,
				  left: neuLeft
				});
			};
			jQuery("#lightboxnavi").css({
				top: mouseY-100,
				left: mouseX+100
			});
			jQuery("#lightbox li.navimove").mousemove(function(e){
				mouseY = e.clientY-8;
				mouseX = e.clientX-24;
			});

			var intervallID = window.setInterval(followme, 50);
			
			jQuery("#lightboxnavi .prev").click(function(){
				if (!jQuery("#lightbox ul li.active").prev().hasClass("navimove")) {
					jQuery("#lightbox ul li.active").removeClass("active").prev().addClass("active");
					var index = jQuery("#lightbox ul li").index(jQuery("#lightbox ul li.active"));
					naviCounterActual = index;
					setCounter();
				}
			});			
			jQuery("#lightboxnavi .next").click(function(){
				if (jQuery("#lightbox ul li.active").next().length == 1) {
					jQuery("#lightbox ul li.active").removeClass("active").next().addClass("active");
					
					var index = jQuery("#lightbox ul li").index(jQuery("#lightbox ul li.active"));
					naviCounterActual = index;
					setCounter();
				}
			});
			jQuery("#lightboxnavi .close").click(function(){
				window.clearInterval(intervallID);
				jQuery("#lightbox").css("display","none");
				jQuery("#lightbox div, #navi .postwrapper .post").remove();
			});
			
			jQuery("#lightboxbackground").css("opacity","0.8");
			jQuery("body").removeClass("loading");
			
		}).css({ opacity: 0, display: "block"}).animate({ opacity: 1 }, 1000);

		// make visited only first time
		var elem_ul = elem.parents("ul");
		if (!elem_ul.hasClass("visited")) {
			var highlightClass = elem_ul.attr("class");
			highlightClass = "."+highlightClass;
			taglines_div.find(highlightClass).addClass("visited");
			
			elem_ul.addClass("visited");

			// update cookies
			var updateVisitedCookies = jQuery.cookie('fricklr_visited_posts')+highlightClass;
			jQuery.cookie('fricklr_visited_posts', updateVisitedCookies, { path: '/', expires: 30 });		
		
		}
		
	};
	
	
	var resetNaviPosition = function() {
		var navTop = navi_div.css("top");
		navTop = Number(navTop.split("px",1));
		var navHeight = Number(navi_div.height());
		var sum = navHeight+navTop;
		//console.log(sum);
		windowHeight = Number( jQuery(window).height() );
		windowWidth = Number ( jQuery(window).width() );
		if(sum > windowHeight) {
			var correctTop = windowHeight-navHeight-20;
			navi_div.animate({ top: correctTop },500);
		}
		
	};

	
	// ! TAGS 
	var tagHtml = [];
	tag_a.each(function(i){
		tagHtml[i] = jQuery(this).html();
	});
	
	
	// ! highlight same tag
	var getSameTag = function(p) {
		tag_a.not("#hover a").each(function() {
			var thisText = jQuery(this).html();
			if (thisText == p) {
				jQuery(this).addClass("sametag");
			}
		});
		
	};
	

	tag_a
	.hover(
		function(){
			var this_parent_ul = jQuery(this).parents("ul");
			this_parent_ul.attr("id","hover");

			
			var highlightClass = this_parent_ul.attr("class");
			highlightClass = "."+highlightClass;
			taglines_div.find(highlightClass).addClass("hover");
			
			var thisText = jQuery(this).html();
			getSameTag(thisText);
		
			
			
		},
		function(){
			var this_parent_ul = jQuery(this).parents("ul");
			this_parent_ul.attr("id","");
			taglines_div.find("ul").removeClass("hover");
			
			
			tag_a.removeClass("sametag");
			
		}
	)
	.click(function(e){
		if (!jQuery("body").hasClass("logged-in")) {
			loadSinglePost(jQuery(this));
			mouseX = e.pageX;
			mouseY = e.pageY;
		}
		return false;
	})
	.dblclick(function() {
		if (jQuery("body").hasClass("logged-in")) {
			loadSinglePost(jQuery(this));
			// remove dblclick selected text
			var sel = window.getSelection();
			sel.removeAllRanges();
			mouseX = e.pageX;
			mouseY = e.pageY;
		}
		return false;
	});


	// ! admin area
	if (jQuery("body").hasClass("logged-in")) {
	
		// ! save color value to same tags in cloud
		var copycolor = function(p1,p2) {
			tag_a.each(function() {
				var thisText = jQuery(this).html();
				if (thisText == p1) {
					// set color in “input”
					jQuery(this).siblings("span.tagcolour").children().html(p2);
					// set reminder & background
					jQuery(this).siblings(".pickcolour").html("abspeichern!").css("background-color",p2);

					// open all modified tags
					jQuery(this).parent().addClass("dragged");
				}
			});
		};
		
		// ! color create/pick/save buttons
		tag_li.each(function(){
			var thisColor = jQuery(this).find("span.tagcolour div.EIP_textbox").html();
			
			if (thisColor == "&nbsp;") {
				// case A: no color defined yet
				jQuery(this).append("<div class='pickcolour' style='background-color:"+thisColor+";'>aufnehmen</div>");
			} else {
				// case B: color is defined but can be modified
				jQuery(this).append("<div class='copycolour' style='background-color:"+thisColor+";'>übertragen</div>");
				jQuery(this).append("<div class='pickcolour'>aufnehmen</div>");
			}
			
			// 
			jQuery(this).find(".copycolour").click(function(){
				var thisColor = jQuery(this).siblings('.tagcolour').children().html();
				var thisTag = jQuery(this).siblings("a").html();
				copycolor(thisTag,thisColor);
			});
			
			// pick/change colour
			jQuery(this).find(".pickcolour").click(function() {
				var pickcolor_div = jQuery(this);
				var inputID = jQuery(this).siblings(".tagcolour").children().attr("id");

				jQuery(this).ColorPicker({
					color: '000000',
					onShow: function() {
						// for
						pickcolor_div.html("");
						jQuery(this).siblings(".copycolour").addClass("dontcopy");
					},
					onChange: function (hsb, hex, rgb) {
						pickcolor_div.css('backgroundColor', '#' + hex);
						jQuery("#"+inputID).html('#' + hex);
					},
					onSubmit: function(hsb, hex, rgb) {
						pickcolor_div.html("abspeichern!");
					}
					
			  	});
			  	
			});
		});
	
		tag_li
		.draggable({
			start: function() {
				jQuery(this).removeClass("dragged");	
			},
			stop: function() {
				
				var this_top = jQuery(this).css("top");
				this_top = this_top.split("px",1);
				var this_left = jQuery(this).css("left");
				this_left = this_left.split("px",1);
				jQuery(this).addClass("dragged");
				
				// set new position
				jQuery(this).find("span.tagposition div.EIP_textbox").html(this_left+","+this_top);
				//jQuery(this).find("span.tagposition").html(this_left+","+this_top);
				copyCloud();
			}
		})
		.mouseenter(function(){
			jQuery(this).append("<div class='edittag'></div>");
			jQuery(this).find(".edittag").click(function(){
				jQuery(this).parent().toggleClass("dragged");
			});
		})
		.mouseleave(function(){
			jQuery(this).find(".edittag").remove();
		});
	}

	
});
