var $j = jQuery.noConflict();

var aGoodJQuery = {
	/** AJAX function. If a link with the class "content-loader" is clicked, 
	  * this function calls the php-file referenced by the variable url and 
	  * loads the generated content in to all elements with the class 
	  * "content-target".
	  */
	ContentLoader : function() {
		$j.each(
			["-tag","-news","-all"],
			function() {
			var bodyID = $j("body").attr("id");
			var type = this.substr(1);
			var imgLoad = "<div class=\"ajax-load\"><img src=\"/pix/ajax-loader.gif\" alt=\"loading...\"></div>";
			var url = "/inc/imageLoader.php";

			var loader = $j("[class*='content-loader" + this + "']");
			var target = $j("[class*='content-target" + this + "']");
			
			if(type == "tag") {
				// Code to generate a feed based on selected tags
				var selectedTags = new Array();
				var tagPath = "/bildgalleri/kategori/";
			
				loader.toggle(function (e) {
					target.html(imgLoad);
					$j(this).addClass("active");
					var tag = $j(this).attr("href");
					tag = tag.replace(tagPath, "");
					selectedTags.push( tag );
					$j.ajax({
						type: "POST",
						url: ""+url,
						data: "data="+selectedTags+"&type="+type+"&bodyID="+bodyID,
						success: function (html) {
							target.html(""+html);
						}
					});
					e.preventDefault();
				}, function (e) {
					target.html(imgLoad);
					$j(this).removeClass("active");
					var tag = $j(this).attr("href");
					tag = tag.replace(tagPath, "");
					for ( key in selectedTags ) {
						if ( selectedTags[key] == tag ) {
							selectedTags.splice(key,1);
						}
					}
					$j.ajax({
						type: "POST",
						url: ""+url,
						data: "data="+selectedTags+"&type="+type+"&bodyID="+bodyID,
						success: function (html) {
							target.html(""+html);
						}
					});
					e.preventDefault();
				});
			} // endif type == "tag"
		});
	}, // end ContentLoader
	
	/** Tab function. Looks for elements with class attributes on the format
	  * "tab-toggle-*" and "tab-target-*", where * is a string in the array
	  * supplied to the jQuery .each()-function.
	  */
	Tab : function() {
		$j.each(
			["-day","-week","-month","-year","-all"],
			function() {
				var tabToggle = $j("[class*='tab-toggle" + this + "']");
				var tabTarget = $j("[class*='tab-target" + this + "']");
				tabToggle.bind("click", function(e) {
					if (!tabTarget.hasClass('active')) {
						$j("[class*='tab-target']").removeClass('active');
						$j("[class*='tab-toggle']").parent("li")
							.removeClass('active');
						$j("[class*='tab-toggle']").removeClass('active');
						tabTarget.addClass('active');
						$j(this).parent("li").addClass('active');
						$j(this).addClass('active');
					}
					e.preventDefault();
				});
			}
		);
	}, // end Tab

	/** Toggle function.
	  */
	Toggle : function(){
		var default_hide = {"-grid": true,"-user-menu": true};
		$j.each(
			["-grid", "-paragraphs", "-blockquote", "-list-items", "-section-menu", "-tables", "-forms", 
			"-login-forms", "-search", "-articles", "-accordion", "-activities", "-tag-list", "-menu-list",
			"-class", "-children","-pupils","-user-menu"],
			function() {
				var targetAttr = this.substr(1);
				var targets = $j("." + (targetAttr == 'accordion' ? 'accordion-block' : targetAttr) );
				if (default_hide[this]) {
					targets.hide();
					$j("[class*='toggle"+this+"']");
				} else {
					$j("[class*='toggle"+this+"']").addClass("active");
				} 
				$j("[class*='toggle"+this+"']")
				.bind("click", function(e) {
					var target = $j(this).parents("[class*='toggle-container']").children("." + (targetAttr == 'accordion' ? 'accordion-block' : targetAttr) );
					if (!$j(this).hasClass("active")){
						$j(this).removeClass("hidden").addClass("active");
						target.slideDown();
					} else {
						$j(this).removeClass("active").addClass("hidden");
						target.slideUp();
					}
					e.preventDefault();
				});
			}
		);
	},
	
	DropDown : function() {
		$j("[class^='drop-down']").children("li").hover(function(event) {
			$j(this).addClass("selection");
			$j(this).children("ul").show();
			event.preventDefault();
		}, function(event) {
			$j(this).removeClass("selection");
			$j(this).children("ul").hide();
			event.preventDefault();
		});
	} // end DropDown
}

$j(function ($j) {
	if($j("[id*='begood-admin-tab']").length) { aGoodJQuery.AdminTab(); }
	if($j("[class*='group-menu']").length) { aGoodJQuery.GroupMenu(); }
	if($j("[class*='content-target']").length) { aGoodJQuery.ContentLoader(); }
	if($j("[class*='tab-toggle']").length) { aGoodJQuery.Tab(); }
	if($j("[class*='toggle']").length) { aGoodJQuery.Toggle(); }
	if($j("[class*='drop-down']").length) { aGoodJQuery.DropDown(); }
});
