var App; if (!App) App = {};
var Init; if (!Init) Init = {};
var Interact; if (!Interact) Interact = {};
var Manipulate; if (!Manipulate) Manipulate = {};
var Options; if (!Options) Options = {};
var Handlers; if (!Handlers) Handlers = {};

Manipulate = {
	
	"hidePost" : function(article,tag) {
		var data = {};
		data.title = article.find("h1 a.title").text();
		
		data.tags = "";
		
		article.find(".tags span.tag").each(function() {
			if($(this).is(".blocked")) { data.tags += $('<div>').append($(this).clone()).remove().html(); }
		});
		
		data.nid = article.attr("id");
		data.original = article.html();
		data.permalink = article.find("a.title").attr("href");
		
		var html = $(Templates.render(Templates.hiddenPost,data));
		
		article.parent().after(html);
		
		Init.TagBlock(html.find("span.tag a.block"));
		
		if(App.ie && App.ieVersion < 8) {
			article.parent().slideUp('fast',function() {
				article.parent().remove();
			});
		} else {
			article.parent().slideUp("fast",function() {
				$(this).remove();
			});
		}
	},
	
	"showPost" : function(article) {
		var post = $(article.find(".original").html());
		
		
		
		if(App.ie && App.ieVersion < 8) {
			article.after(post.hide());
			Init.Post(post);
			article.remove();
			post.slideDown("fast");
		} else {
			article.after(post.hide());
			Init.Post(post);
			article.remove();
			post.slideDown("fast");
		}
		
	},
	
	"blockTag" : function(tid,callback,error) {
		if(!callback) { callback = function(comment){}; }
		if(!error) { error = function(){}; }
		
		$.post("/manipulate/blockTag.html","tid="+tid,function(data) {
			if(data == "DONE") {
				callback();
			} else {
				error();
			}
		},"text");
	},
	
	"unblockTag" : function(tid,callback,error) {
		if(!callback) { callback = function(comment){}; }
		if(!error) { error = function(){}; }
		
		$.post("/manipulate/unblockTag.html","tid="+tid,function(data) {
			if(data == "DONE") {
				callback();
			} else {
				error();
			}
		},"text");
	}

};

///////////////////////////////////////////////////////////
/////////////////Event Handlers////////////////////////////
///////////////////////////////////////////////////////////
Handlers = {
	
	
};

///////////////////////////////////////////////////////////
/////////////////Tag Blocker/////////////////////////////////////
///////////////////////////////////////////////////////////
Init.TagBlock = function(selector) {
	if(!$(selector).length) { return; }
	
	$(selector).click(function(e) {
		e.preventDefault();
		
		var link = $(this);
		var tid = parseInt(link.attr("rel").substr(1));
		var tag = link.parent().children("a").eq(0).text();
		
		if(!link.parent().hasClass("blocked")) {
			Manipulate.blockTag(tid,function() {
				
				$("span.t" + tid).addClass("blocked");
				
				if($("span.article").length > 1) {
					$("span.article").each(function() {
						if($(this).find(".tags span.t" + tid).length) {
							Manipulate.hidePost($(this),tag);
						}
					});
				}
				
				App.Stats.event("Tags","Block",tag);
				
			},function() {
				//alert("erreur");
			});
		} else {
			Manipulate.unblockTag(tid,function() {
				
				$("span.t" + tid).removeClass("blocked");
				
				if($("span.result").length || $("span.article").length || $(".article-hidden").length) {
					$(".article-hidden").each(function() {
						var tags = $(this).find(".original .tags");
						if( tags.find("span.t" + tid).length && !tags.find("span.blocked").length) {
							Manipulate.showPost($(this));
						}
					});
				} else {
					link.parent().fadeOut("fast");
					
					if(link.parent().parent().hasClass("tags")) {
						var tags = link.parent().parent();
						if(!tags.find(".blocked").length && tags.find("p.noresult").length){
							tags.find("p.noresult").show();
						}
					}
				}
				
				App.Stats.event("Tags","Unblock",tag);
				
			},function() {
				//alert("erreur");
			});
		}
		
	});
};
//////////////////////////////////////////////////////////