dojo.declare("com.mgh.ProgramsView", [com.mgh.CentersView], {
	constructor : function(){
		this.renderLayer = '#programSpecialty div';		
		this.listLayout = '<ul>${0}</ul>';
		this.listElement = '<li>${0}</li>';
		this.model;
	},
	
	RenderInitialView : function(model){
		if (applicationState.getApplicationComponentState('program')){
			this.model=model;
			var id = applicationState.model.program;
			this.RenderSelectedView(id, 'Program', 'Program');
		} else {
			this.RenderListView(model);
		}		
	},
	
	// with state.
	RenderListView : function(model){
		// model comes empty during a showAllPrograms event.		
		this.model = model;
		var state = jQuery(this.renderLayer).attr('state');
		var output = "";
		
		if(this.model.length > 0){		
			// Check for state
			if (applicationState.getApplicationComponentState('program')){
				var id = applicationState.model.program;
				this.RenderSelectedView(id, 'Program', 'Program');
			} else {
				this.RenderListViewFromExistingModel();
			}	

			//Open view if it is closed
			if(state == 'closed'){
				this.ToggleView();
				jQuery(this.renderLayer).attr('state','open');
			}								
		} else {								
			if(state == 'open'){
				this.ToggleView();
				jQuery(this.renderLayer).attr('state','closed');
			}
		}
	},	
	
	// fix, this needs to be revised
	RenderListVeiwFromExistingModel : function(){
		var output = "";
		for (var i = 0; i < this.model.length; i++){
			output += dojo.string.substitute(this.listElement, [this.model[i].Format()]);
		}
			
		output = dojo.string.substitute(this.listLayout,[output]);		
		jQuery(this.renderLayer).html(output);			
	},
	
	ToggleProgramsView : function(id,name,type){
		var state = jQuery(this.renderLayer).attr('state');		
				
		if(type.toLowerCase() == 'center'){
			this.ToggleView();
			if(state == 'closed'){
				jQuery(this.renderLayer).attr('state','open');
			} else {
				if(state == 'open'){
					jQuery(this.renderLayer).attr('state','closed');				
				}
			}						
		} else {
			if(type == '' && state == 'open'){
				this.ToggleView();
				jQuery(this.renderLayer).attr('state','closed');	
			}
		}		
	},
	
	ToggleView : function(){		
		jQuery('#programSpecialty').animate({ width: 'toggle', opacity: 'toggle' }, 'slow');
	}	
});
