

$(window).load(function() {
	if (location.href.match(/#more$/)) $(".contactbutton").trigger('click');
	
});

/*Guaranteed to fire on page change.*/
function contentUpdate() {
	enableImageCorrections();
		/*automatic wrapping of special class images*/
		
	enableBlankTargets();
		/*all links points to target = _blank*/
		
	enableBlogFeed();
		/*fills div.blogrss*/
}

function enableBlogFeed() {
	
	if ($(".blogrss").length == 0) return;
	
	$.get("fetchrss.php",null,function(data,textStatus) {
		
		var $xml = $(data);
		
		$xml.find("item:lt(5)").each(function(index,item) {
			
			var $post = $("<div></div>").appendTo(".blogrss")
			.addClass("blogpost")
			.append(
				$("<div></div>")
				.css("font-weight","bold")
				.append(
					$("<a></a>")
						.attr("href",$(item).find("link").text())
						.attr("target","_blank")
						.html($(item).find("title").text())
					)
			)
			.append(
				$("<p></p>")
				.html($(item).find("description").text())
			)
			.appendTo(".blogrss");
				
			/*$("<div></div>").addClass("blogpost_title").css("font-weight","bold").html($(item).find("title").text()).appendTo($post);
			$("<p></p>").addClass("blogpost_description").html($(item).find("description").text()).appendTo($post);*/
			
		});
		
	},"xml");
	
}

function enableContactSlider() {
	$("<div></div>").addClass("contactslider").appendTo("body");
	$("<div></div>").addClass("contacttext").appendTo("body");
	$.get("pages/contacttext.php",null,function(data,textStatus) {
		$(data).appendTo("div.contacttext");
		
		
	},"html");
	
	$("<div></div>").addClass("contactbutton").text("more").appendTo("body").css("cursor","pointer").click(function(e) {
		$(".contactbutton").clearQueue();
		clearTimeout(glowtimer);
		glowtimer = false;
		$.cookie('glowdisable',true,{expires:3});
		$(".contactslider").slideToggle(200);
		$(".contacttext").slideToggle(200);
		$(".contactbutton").hasClass("isdown") ? $(".contactbutton").animate({'top':'0px'},200).text("more").removeClass("isdown") : $(".contactbutton").text("less").animate({'top':'200px'},200).addClass("isdown");
	});
		
	if (!$.cookie('glowdisable')) glow($(".contactbutton"),"#600");	
}

var glowtimer = true;

function glow($el,color) {
	var origcolor = $el.css('background-color');
	
	$el.animate({'background-color':color},300).animate({'background-color':origcolor},1400,function() {
		if (glowtimer) {
			glowtimer = setTimeout(function() {
				glow($el,color);
			},5000);
		}
	});
}

function enableMenuBar() {
	$("a.pagelink").live('click',function(e) {
		e.preventDefault();
		
		if ($(this).hasClass("active")) return false;
		$("#menu a").removeClass("active");

		var target = $(this).attr("href");
		
		($(this).parents().filter("div#menu").length > 0) ? $(this).addClass("active") : $("div#menu a[href$='" + target + "']").addClass("active");
		
		$.get(target,null,function(data,textStatus) {
			$("table.columns").empty();
			$(data).appendTo("table.columns");
			contentUpdate();
		},"html");
	});
	
	$("a.pagelink").live('mouseup',function(e) {
		e.preventDefault();
		$(this).trigger('click');
	});
	
	$("#menu a").eq(0).trigger('click');
}

function enableMailForm() {
	
	$(".mailform").live('click', function() {
		$sh = $("<div></div>").addClass("shader").appendTo("body").width($(window).width()).height($(window).height());
		$of = $("<div></div>").addClass("formouter").appendTo("body").css("left",($(window).width() - 526)/2).css("top",$(window).scrollTop() + 20);
		$if = $("<div></div>").addClass("forminner").appendTo($of);
		
		$name = $("<input/>").attr("type","text").attr("name","name").attr("id","name").addClass("untouched").addClass("mailforminput").addClass("textfield").width(474).attr("value","Your name").appendTo($if);
		$mail = $("<input/>").attr("type","text").attr("name","mail").attr("id","mail").addClass("untouched").addClass("mailforminput").addClass("textfield").width(474).attr("value","E-mail address").appendTo($if);
		$subj = $("<input/>").attr("type","text").attr("name","subj").attr("id","subj").addClass("untouched").addClass("mailforminput").addClass("textfield").width(474).attr("value","Subject").appendTo($if);
		$mess = $("<textarea/>").attr("name","mess").attr("id","mess").addClass("untouched").addClass("mailforminput").addClass("textfield").width(474).height(300).attr("value","Message").appendTo($if);
		$bsnd = $("<input/>").attr("type","button").attr("name","bsnd").attr("id","bsnd").addClass("button").attr("value","Send").appendTo($if);
		$bcan = $("<input/>").attr("type","button").attr("name","bcan").attr("id","bcan").addClass("button").attr("value","Cancel").appendTo($if);
		
		$(".untouched").focus(function() {
			if ($(this).hasClass("untouched")) {
				$(this).removeClass("untouched");
				$(this).attr("value","");
			}
		});
		
		$(".mailforminput").focusin(function() {
			$(this).animate({backgroundColor:"#72d8ff"},200);
		});
		
		$(".mailforminput").focusout(function() {
			$(this).animate({backgroundColor:"#ddd"},200);
		});
		
		
		$(".button").css("cursor","pointer");
		
		$bcan.click(function() {
			$(this).animate({backgroundColor:"#72d8ff"},40,function() {
				if(confirm("Do you really want to quit without sending a mail\n\r(changes will be lost)?")) {
					$sh.remove();
					$of.remove();
				} else {
					$(this).animate({backgroundColor:"#ddd"},400);			
				}
			})
		});
		
		function generateError(msg,$elm) {
			$er = $("<div></div>").addClass("errormessage").text(msg);
			$er.insertAfter($elm);
			$er.slideDown(300);
		}
		
		$bsnd.click(function() {
			$(this).animate({backgroundColor:"#72d8ff"},40,function() {
				$(".errormessage").remove();
				
				$(".textfield").each(function(index,item) {
					if ($(this).hasClass("untouched") || $(this).val() == "") {
						generateError("Please fill out this form field.",$(this));
					}
				});
				
				if (!$mail.attr("value").match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/)) {
					generateError("This is not a valid e-mail address.",$mail);
				}
				
				if ($(".errormessage").length == 0) {
					
					$("input").add("textarea").attr("disabled","disabled");
					
					$wb = $("<div>Please wait, sending mail...</div>").addClass("sendwaitbox").appendTo("body");
					$wb.css("top",200);
					$wb.css("left",($(window).width() - $wb.width())/2);
					
					$.post("sendmail.php",{name:$name.val(),mail:$mail.val(),subj:$subj.val(),mess:$mess.val()},function(data,textStatus) {
						$wb.text("Success!");
						setTimeout(function() {
							$wb.remove();
							$sh.remove();
							$of.remove();
						},2000);
					},"json");
				}
				
				$(this).animate({backgroundColor:"#ddd"},400);
			})
		});
	});
}

function enableImageZooming() {
	
	var $background = $("<div></div>").css({
		position:"absolute",
		left:"1px",
		top:"1px",
		width:$(window).width()-2,
		height:$(document).height()-2,
		'background-color':"#000",
		display:"none"
	}).appendTo("body");
	
	var $placeholder = $("<div></div>").css({
		position:"fixed",
		padding:"5px",
		'background-color':"#000",
		display:"none"
	}).appendTo("body");
	
	$("img").click(function(e) {
		$placeholder.empty();
	
		var src = $(this).attr("src");
		
		var $img = $("<img/>").attr("src",src).appendTo($placeholder);
		
		var dimensions = getNaturalDimensions($img);
		
		$placeholder.css({
			left:($(window).width()/2) - (dimensions.width/2),
			top:($(window).height()/2) - (dimensions.height/2)
		});
		
		$background.fadeTo(200,0.7,function() {
			$placeholder.slideDown(150);
			
			$placeholder.add($background).click(function(e) {
				$placeholder.slideUp(150,function() {
					$img.remove();
					$background.fadeOut(150);
					$background.unbind();
					$placeholder.unbind();
				});
			});
		});
	});
}

function getNaturalDimensions($element) {
	var $el = $element.clone();
	
	$el.css({
		"visiblity":"hidden",
		"left":"0px",
		"top":"-3000px"
	});
	
	$el.appendTo("body");
	
	var result = {
		width:$el.width(),
		height:$el.height()
	};
	
	$el.remove();
	
	return result;
}

function enableBubblelinks() {
	$("a.bubble").each(function(index,item) {
		var $target = $($(this).attr("href"));
		
		$(this).click(function(e) {
			e.preventDefault();
			e.stopPropagation();
			$target.css("left",($(this).offset().left - 70) + $(this).width()/2);
			$target.css("top",$(this).offset().top - $target.height());
			if ($target.css("display") == 'none') {
				$("a[href='#" + $("div.bubble.activated").attr("id") + "']").trigger("click");
				$target.fadeIn(100);
				$target.addClass('activated');
			} else {
				$target.fadeOut(100);
				$target.removeClass("activated");
			}
		});
	});
	
	$("body").click(function(e) {
		var $activated = $("div.bubble.activated:eq(0)");
		
		if ($activated.length) {
			var href = $activated.attr("id");
			$("a[href='#" + href + "']").trigger("click");
		}	
	})
	
	$("div.bubbletop").add("div.bubblebody").click(function(e) {
		e.stopPropagation();
	});
}

function enableImageCorrections() {
	$("img.positionright").each(function(index,item) {
		var $wrap = $("<div></div>").addClass("floatwrapper").insertBefore($(this));
		var src = $(this).attr("src");
		var alt = $(this).attr("alt");
		$("<img/>").addClass("floatright").attr("src",src).appendTo($wrap);
		$("<div></div>").addClass("alttext").text(alt).appendTo($wrap);
		$("<div></div>").addClass("clear").appendTo($wrap);
		$(this).remove();
	});
}


function enableTwitterUpdate() {
	$.get("fetchtwitter.php",null,function(data,textStatus) {
		var newstatus = $(data).find("item").eq(0).find("description").text();
		newstatus = newstatus.substr(9);
		
		var matches = newstatus.match(/https?:\/\/\S+/i);
						
		if ($.isArray(matches)) {
			$.each(matches,function(index,item) {
				newstatus = newstatus.replace(item,"<a href=" + item + " target='_blank'>" + item + "</a>");
			});
		}
		
		var matches = newstatus.match(/@\S+/i);
		
		if ($.isArray(matches)) {
			$.each(matches,function(index,item) {
				newstatus = newstatus.replace(item,"<a href=http://twitter.com/#!/" + item.substr(1) + " target='_blank'>" + item + "</a>");
			});
		}
		
		$("#twitter").html("" + newstatus);
		
		$("<a></a>")
			.css({'display':'block','position':'absolute','right':'42px','top':'87px','width':'35px','height':'30px'})
			.addClass("twitterlink")
			.attr("href","http://twitter.com/#!/kparkov")
			.attr("target","_blank")
			.appendTo("#pageframe");
	},"xml");
}

function enableImageProcessing() {
	$("img").each(function(index,item) {
		var $wrapper = $("<div></div>");
		$wrapper.addClass("picture");
		$item = $(item);
		$item.after($wrapper);
		$item.remove();
		$item.appendTo($wrapper);
		
		$item.data("src",$item.attr("src"));
		var newsrc = "imager.php?iamgeurl=" + $item.attr("src") + "&s=thumb";
		$item.attr("src",newsrc);
	});
}

function enableExpanders() {
	$(".more").each(function(index,item) {
		$(this).children().first().addClass("expandbutton").next().addClass("expandtext").hide();
		$(this).children().eq(0).click(function() {
			$(this).next().toggle(150);
		});
	});
}

function enableBlankTargets() {
	$("a:not(#menu a)").attr("target","_blank");	
}

function enableComments() {
	
	$(".more").each(function(index,item) {		
		if (!$(item).hasClass("nc")) {
			var $commentframe = $("<div></div>").appendTo($(item).children().eq(1));
			$commentframe.addClass("commentbox");
			$commentframe.data("morebox",$(item).children().first().text());
			
			updateComments($commentframe);
		}
	});
}

function updateComments($commentframe) {
	$commentframe.empty();
		
	var morebox = escape($commentframe.data("morebox"));
	
	$.post("comments.php",{"job":"get","morebox":morebox},function(data, textStatus) {
		if (data.result != "null") {
			$.each(data.result,function(index,item) {
				var $comment = $("<div></div>");
				$comment.addClass("comment");
				
				$comment.html("<span class='commentname'>" + unescape(item.name) + "</span> " + unescape(item.comment));
				$comment.appendTo($commentframe);
			});
		}
		
		var $commentform = $("<div></div>");
		$commentform.addClass("commentform");
		
		var $inputactivate = $("<div>Comment on this</div>").appendTo($commentform);
		$inputactivate.addClass("commentactivatelink");
		
		var $inputframe = $("<div></div>").css("display","none").appendTo($commentform);
		
		function clearMe() {
			$(this).val("");
			$(this).unbind();
		}
		
		var $inputname = $("<input type='text' class='cname'></input>").val("Name").click(clearMe).focus(clearMe).appendTo($inputframe);
		var $inputemail = $("<input type='text' class='cemail'></input>").val("E-mail").click(clearMe).focus(clearMe).appendTo($inputframe);
		var $inputcomment = $("<textarea class='ccomment'></textarea>").val("Comment").click(clearMe).focus(clearMe).appendTo($inputframe);
		var $inputsend = $("<input type='button' value='Send'></input").addClass("button").appendTo($inputframe);
		
		$inputsend.click(function() {
			var sendobject = {
				"job":"put",
				"morebox":escape($(this).parents(".commentbox").data("morebox")),
				"name":escape($(this).parent().find(".cname").val()),
				"email":escape($(this).parent().find(".cemail").val()),
				"comment":escape($(this).parent().find(".ccomment").val())
			}
			
			if (sendobject.name == "" || sendobject.email == "" | sendobject.comment=="") {
				alert("Du skal udfylde alle felter!");
				return;
			}
			
			$button = $(this);
			
			$.post("comments.php",sendobject,function(data,textStatus) {
				var $contextcommentform = $button.parents(".commentform");
				var $contextcommentbox = $button.parents(".commentbox");
				
				if (data.status == "moderation") {
					$contextcommentform.slideUp(100,function(){$(this).remove();});
					var $alert = $("<div></div>").appendTo($contextcommentbox);
					$alert.addClass("alert");
					$alert.text("Your comment has been sent for moderation, since you have not written a comment before. This check will only be performed once.");
				} else if (data.status == "accepted") {
					updateComments($contextcommentbox);
				}
			},"json");
		});
		
		$inputactivate.click(function() {
			$(this).slideUp(150);
			$(this).next().slideDown(150);
		});
		
		$commentform.appendTo($commentframe);
	},"json");
}

$(document).ready(function() {
	
	/*enableExpanders();*/
		/*more sections create collapsible elements*/
	
	enableComments();
		/*enables comments in "more" sections*/
	
	/*enableImageProcessing();*/
		/*automatic php processing of inserted picture urls. not currently working!*/
	
	enableTwitterUpdate();
		/*fetches recent twitter update by php proxy*/
	
	enableBubblelinks();
		/*enables opening of bubble texts through links*/
	
	//enableImageZooming();
		/*enables zooming of images to a centered, full-size view*/
		
	enableMailForm();
		/*enables the mail sender form.*/
		
	enableMenuBar();
		/*enables the links in the menu bar*/
			
	enableContactSlider();
		/*enables the top contact slider*/
	
	contentUpdate();
});
