Event.observe(window, 'load', wireup);

var Builder = {	
	init : function() {
		var target;
    if(location.hash.substring(1).length != 0){
      if($(location.hash.substring(1)+"Drawer")){
        target=$(location.hash.substring(1)+"Drawer");
      }else{
        target=$$('.first')[0];
      }
      closeAll('.drawer');
      openDrawer(target);
    }
		$('chest').observe('click', function(event){Builder.eventProcessor(event)}, true);
        if ($('sideChest')) {
            $('sideChest').observe('click', function(event) {Builder.sideDrawerEventProcessor(event)}, true);
        }
    },
	
	eventProcessor : function(event) {	
		var element = Event.element(event);
		switch(element.className) {
			case "actionable drawerToggle":
				if (element.up('.drawer').hasClassName('open')) {
					element.up('.drawer').removeClassName('open');
					$$('.first')[0].addClassName('open');
				}
				else {
					//close all drawers
					closeAll('div.drawer');
					//open the target drawer
					openDrawer(element.up('.drawer'));
					}
			break;
			case "innerActionable innerDrawerToggle":
				if (element.up('.innerDrawer').hasClassName('open')) {
					//mb 04/20/09 removed to fix bug that was making the whole drawer disappear
					//element.up('.innerDrawer').toggle(); 
					//mb 04/20/09 added to fix drawer bug closing problem
					element.up('.innerDrawer').removeClassName('open'); 					
				}
				else {
					//close all innerDrawers
					closeAll('.innerDrawer');
					//open the target drawer
					openDrawer(element.up('.innerDrawer'));
				}
			break;
			case "expandableListTerm":
				element.next('.expandableListDefinition').toggle();
			break;
            case "tabLabel":
                element.up().down('.tabOpen').removeClassName('tabOpen');
                element.addClassName('tabOpen');
                element.up('.tabbedPanesWrapper').down('.tabContentOpen').removeClassName('tabContentOpen');
                $(element.id.replace('label', 'content')).addClassName('tabContentOpen');
            break;
        }
	},
		
	expandables : function() {
		$$('.step').invoke('observe', 'click', function(event){
			if (this.hasClassName('expanded'))
				this.removeClassName('expanded');
			else
				this.addClassName('expanded');
		});
	},

    sideDrawerEventProcessor : function(event) {
        var element = Event.element(event);
        switch (element.tagName) {
            case "H4":
            case "STRONG":
                if (element.up('.sideDrawer').hasClassName('open')) {
                    element.up('.sideDrawer').removeClassName('open');
                    $$('.sideDrawer')[0].addClassName('open');
                } else {
                    closeAll('.sideDrawer');
                    openDrawer(element.up('.sideDrawer'));
                }
            break;
        }
    }
}

function closeAll(selector){
  var drawers = $$(selector);
  for(var d=0; d<drawers.length; d++){
    drawers[d].removeClassName('open');
  }
}

function openDrawer(drawer){
  drawer.addClassName('open');
}

function wireup() {
		Builder.init();
		lWArgs();
	}


