var HideButtons = {

	create:	function(element)
	{
//		alert("added");
//		i = 1;
		$$('a.hide_btn').each(function(element){
			Event.observe(element, 'click', HideButtons.toggleHide);
			
//			alert("found "+i);i++;
		}.bindAsEventListener(element));
		
		$$('.hide_btn_hidden').each(function(element){
			//these objects will be hidden at runtime initialisation
			Event.observe(element, 'click', HideButtons.toggleHide);
		}.bindAsEventListener(element));
	},
	
	toggleHide: function(event){
		Event.stop(event);
		
		if(!Element.hasClassName(Event.element(event), "hide_btn_hidden")){
			if(!Element.hasClassName(Event.element(event), "hidden_now")){
				Element.update(Event.element(event),"show");
				Element.addClassName(Event.element(event), "hidden_now");
			}
			else{
				Element.update(Event.element(event),"hide");
				Element.removeClassName(Event.element(event), "hidden_now");
			}
		}
			
			
//		new Effect.Highlight(Event.element(event));
		//function to toggle nested elements visibility
		Try.these(
			function() { Effect.toggle(Event.element(event).next('.hideable'),'appear') },
			function() { Effect.toggle(Event.element(event).down('.hideable'),'appear') },			
			function() { Effect.toggle(Event.element(event).next().next('.hideable'),'appear') },
			function() { Effect.toggle(Event.element(event).down().next('.hideable'),'appear') },
			function() { Effect.toggle(Event.element(event).down().down('.hideable'),'appear') },
			function() { Effect.toggle(Event.element(event).up().next('.hideable')) },
			function() { Effect.toggle(Event.element(event).up().next().down('.hideable')) }
			//function() { alert("cannot find hideable content"); }
			//function() { alert($(Event.element(event))) }
		);
				
		
	},

	
	initHide: function(elemName){
		
		if(!Element.hasClassName(elemName, "hide_btn_hidden")){
			if(!Element.hasClassName(elemName, "hidden_now")){
				Element.update(elemName,"show");
				Element.addClassName(elemName, "hidden_now");
			}
			else{
				Element.update(elemName,"hide");
				Element.removeClassName(elemName, "hidden_now");
			}
		}
		
		//function to toggle nested elements visibility
		Try.these(
			function() { Effect.toggle($(elemName).next('.hideable'),'appear') },
			function() { Effect.toggle($(elemName).down('.hideable'),'appear') },			
			function() { Effect.toggle($(elemName).next().next('.hideable'),'appear') },
			function() { Effect.toggle($(elemName).down().next('.hideable'),'appear') },
			function() { Effect.toggle($(elemName).down().down('.hideable'),'appear') },
			function() { Effect.toggle($(elemName).up().next('.hideable')) },
			function() { Effect.toggle($(elemName).up().next().down('.hideable')) }
		);
		
		
	}
}
