
/**
 * Login form controller for displaying/selecting the project.
 */
var loginProjectController = View.createController('loginProject', {
	
    // selected project
    currentProjectId: null,
    currentProjectName: null,
	
    /**
     * Initializes the controller objects.
     */	
	afterViewLoad: function() {
        $('project_label').innerHTML = getMessage('project_label_text');

		// get project list from the server
	    var projects = SecurityService.getProjects({
	        callback: this.onGetProjects.createDelegate(this),
	        errorHandler: function(m, e) {
	            Ab.view.View.showException(e);
	        }
	    });
	},
	
	/**
	 * Displays the project list recieved from the server.
	 * @param {Object} projects
	 */
	onGetProjects: function(projects) {
        if (projects.length > 0) {
            this.currentProjectId = projects[0].id;
            this.currentProjectName = projects[0].title;
        }
        
        if (projects.length > 1) {
            var projectSelector = Ext.DomHelper.append('project_name', {
                tag: 'select',
                id: 'project_selector',
                cls: 'inputField_box'
            });
			var projectSelectorEl = Ext.get('project_selector');
            projectSelectorEl.on('change', this.selectProject.createDelegate(this));

            projectSelectorEl.dom.options.length = 0;
            for (var i = 0; i < projects.length; i++) {
                var project = projects[i];
                projectSelectorEl.dom.options[i] = new Option(project.title, project.id);
            }
            
        } else if (projects.length == 1) {
            var projectDiv = $('project_name');
            projectDiv.className = 'textBasic';
            projectDiv.innerHTML = this.currentProjectName;
        }
	},
	
	/**
	 * Select listener for Project combobox.
	 */
	selectProject: function(e, option) {
		var projectId = option.value;
	    if (projectId != this.currentProjectId) {
            this.currentProjectId = projectId;
		}
	}
});
