Event.observe( window , "load" , function(){

    //Map Collapse Actions
    var collapsibles = $$( ".collapsible" );

    collapsibles.each( function( collapsible_el ){

	    var show_els     = collapsible_el.getElementsByClassName("collapsible_show");
	    var hide_els     = collapsible_el.getElementsByClassName("collapsible_hide");
	    var toggle_els   = collapsible_el.getElementsByClassName("collapsible_toggle");
	    
	    show_els.each( function( el ){
		var ancestor = el.ancestors().detect( function( el ){ return el.hasClassName("collapsible" ); } );
		if( ancestor )
		  Event.observe( el , "click" , show.bind( this , ancestor ) );
	    });

	    hide_els.each( function( el ){
		var ancestor = el.ancestors().detect( function( el ){ return el.hasClassName("collapsible" ); } );
		if( ancestor )
		  Event.observe( el , "click" , hide.bind( this , ancestor ) );
	    });

	    toggle_els.each( function( el ){
		var ancestor = el.ancestors().detect( function( el ){ return el.hasClassName("collapsible" ); } );
		if( ancestor )
		  Event.observe( el , "click" , toggle.bind( this , ancestor ) );
	    });


    });

    collapseAll();
    
});

function collapseAll(  ){
	var els = $$( ".collapsible" );
	els.each( function( el ){ collapse( el ); } );
}

function showAll(  ){
	var els = $$( ".collapsible" );
	els.each( function( el ){ show( el ); } );
}

function collapse( el ){

	var el           = $( el );
	var descriptions = el.getElementsByClassName("collapsible_description");
	var contents     = el.getElementsByClassName("collapsible_content");
	
	descriptions.each( function( el ){ new Effect.Appear( el ); } );
	contents.each(     function( el ){ new Effect.BlindUp( el ); } );
}

function show( el ){
	var el           = $( el );
	var descriptions = el.getElementsByClassName("collapsible_description");
	var contents     = el.getElementsByClassName("collapsible_content");
	
	descriptions.each( function( el ){ new Effect.Fade( el ); } );
	contents.each(     function( el ){ new Effect.BlindDown( el ); } );

}

function toggle( el ){

	var el           = $( el );
	var descriptions = el.getElementsByClassName("collapsible_description");
	var contents     = el.getElementsByClassName("collapsible_content");
	
	descriptions.each( function( el ){ new Effect.toggle( el , "appear" ); } );
	contents.each(     function( el ){ new Effect.toggle( el , "blind" );  } );

}
