(function($){
	$().ready(function(){
		$(".post-tools>ul>li").each(function(){
			var elem = this;
			var warp = $(">.wrap", elem);
			var trigger = $(">.wrap a", elem);
			var menu = $(">.menu", elem);
			
			if (trigger.length && menu.length && warp.length) {
				$(trigger).bind("click.postTools", function(e){
					$(warp).addClass("wrap_open");
					$(menu).show();
					$(document).triggerHandler("click.postTools");
					$(document).unbind("click.postTools").bind("click.postTools", function(e){
						var b = false, li=e.target;
						while(1) {
							li = $(li).parents("li");
							if (!li.length) break;
							if ($(li).is("body")) break;
							li = li[0];
							if (li == elem) {
								b = true;
								break;
							}
						}
						if (b) {
							e.stopPropagation();
							//return false;
						} else {
							$(menu).hide();
							$(warp).removeClass("wrap_open");
							$(document).unbind("click.postTools");
						}
					});
					
					e.stopPropagation();
					this.blur();
					return false;
				});
			}
		});
		
		//share email form
		$(".share_email form").each(function(){
			var elem = this;
			var inpEmail = $(".inpShare_email", elem);
			var inpName = $(".inpShare_name", elem);
			var msgHolder = $(".share_email_msg", $(elem).parents(".share_email"));
			
			if (!msgHolder.length) {
				msgHolder = $("<div />").addClass("share_email_msg").hide();
				msgHolder.appendTo($(elem).parents(".share_email"));
			}
			
			var showError = function(elem, msg) {
				elem = $(elem).get(0);
				if (!elem._errShareForm) {
					elem._errShareForm = $("<label />").attr("for", elem.id).addClass("error");
					elem._errShareForm.appendTo(msgHolder);
				}
				elem._errShareForm.html(msg).show();
			}
			
			var hideError = function(elem) {
				elem = $(elem).get(0);
				if (elem._errShareForm) {
					elem._errShareForm.hide();
				}
			}
			
			if (inpEmail.length && inpName.length) {
				inpEmail = inpEmail[0]; inpName = inpName[0];
				inpEmail.defaultValue = inpEmail.defaultValue || "";
				inpName.defaultValue = inpName.defaultValue || "";
				
				$([inpEmail, inpName])
					.unbind("focus.shareForm")
					.bind("focus.shareForm", function(){
						if ($(this).val() == this.defaultValue) {
							$(this).val("");
						}
						$(this).addClass("has_value");
					})
					.unbind("blur.shareForm")
					.bind("blur.shareForm", function(){
						if ( $(this).val() == "" || $(this).val() == this.defaultValue ) {
							$(this).val(this.defaultValue);
							$(this).removeClass("has_value");
						} else {
							$(this).addClass("has_value");
						}
					});
					
				$(elem)
					.unbind("reset.shareForm")
					.bind("reset.shareForm", function(){
						$([inpEmail, inpName]).triggerHandler("change.shareForm");
					})
					.bind("submit", function(){
						var isSending = elem._isSending || false;
						if (isSending) return false;
						
						elem._isSending = true;
						
						var bValid = true;
						if ( $(inpEmail).val() == "" || $(inpEmail).val() == inpEmail.defaultValue ) {
							showError(inpEmail, "Email Address is required.");
							 bValid = false;
						} else if (!(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test($(inpEmail).val()))) {
							showError(inpEmail, "Invalid Email Address.");
							bValid = false;
						} else {
							hideError(inpEmail);
						}
						
						if ( $(inpName).val() == "" || $(inpName).val() == inpName.defaultValue ) {
							showError(inpName, "Your Name is required.");
							bValid = false;
						} else {
							hideError(inpName);
						}
						
						if (bValid) {
							hideError(inpName);
							hideError(inpEmail);
							
							msgHolder.hide();
							$.ajax({
								url: $(elem).attr("action") || "",
								type: $(elem).attr("method") || "post",
								data: $(elem).serialize(),
								success: function(msg) {
									elem._isSending = false;
									$(document).triggerHandler("click.postTools");
								},
								error: function() {
									elem._isSending = false;
								}
							});
							
						} else {
							elem._isSending = false;
							msgHolder.show();
						}
						
						return false;
					});
				
				$(".share_email_msg", $(elem).parents(".share_email")).html("Email has been sent!").hide();
				$(".submit", elem).bind("click.shareForm",function(){
					this.blur();
					$(elem).submit();
					return false;
				});
				elem.reset();
				
				$([inpEmail, inpName]).each(function(){
					$(this).triggerHandler("blur");
				});
			}
		});
	});
})(jQuery);