/*
 *	jQuery showhide
 *	copyright 2009
 *
 *	@author 	Boy van Amstel
 *	@version 	1.0
 *
 *	Changes 1.0:
 *	[29/09/2009]	- First release 
 */

jQuery.showhide =
{
	build: function(options) {

		try {

			if (jQuery(this).length < 1) return false;

			// Default settings
			var defaults = {
		}

		// Move to options
		var options = jQuery.extend(defaults, options);

		var object = this;

		jQuery(object).log("Class loaded", "info", "jQuery.showhide");

		jQuery(object).find(".hiddenContent:not(.currentlyShown)").hide();

		// Default
		jQuery(object).find(".toggler").unbind("click").click(function() {

			jQuery(this).parents(".showhide").find(".hiddenContent").toggle();

			if (jQuery(this).hasClass("active")) {
				jQuery(this).removeClass("active");
			} else {
				jQuery(this).addClass("active");
			}
			
			doSifr();
			
			return false;

		});

		// Next object
		jQuery(object).find(".toggleNextNode").unbind("click").click(function() {

			jQuery(this).next(":first").toggle();

			if (jQuery(this).hasClass("active")) {
				jQuery(this).removeClass("active");
			} else {
				jQuery(this).addClass("active");
			}

			return false;

			doSifr();
			
		});

		// Radio buttons/Checkboxes
		jQuery(object).find(".togglerByCheckbox:checked, .togglerByRadio:checked").parents(".showhideChild").find(".hiddenContent").show();
		
		jQuery(object).find(".togglerByCheckbox, .togglerByRadio").unbind("click").click(function() {

			jQuery(object).find(".hiddenContent").hide();

			jQuery(this).parents(".showhideChild").find(".hiddenContent").toggle();

			if (jQuery(this).parents(".showhideChild").hasClass("active")) {
				jQuery(this).parents(".showhideChild").removeClass("active");
			} else {
				jQuery(this).parents(".showhideChild").addClass("active");
			}

			doSifr();
			
		});
		
		// By href
		jQuery(object).find(".togglerByHref").unbind("click").click(function() {

			jQuery(this).parents(".showhide").find(".hiddenContent").hide();

			jQuery(this).parents(".showhide").find(jQuery(this).attr("href")).show();
			
			doSifr();
			
			applyValidation();
			
			return false;

		});
				
		return this;

	}
	catch (err) {
		jQuery(this).log(err.toString(), "error", "jQuery.showhide");
	}
}

};

jQuery.fn.extend({
		showhide: jQuery.showhide.build
});	
