/*
    Class: MEMOZ.grouplist
*/
MEMOZ.grouplist = function() {

}
YAHOO.extend(MEMOZ.grouplist, MEMOZ.base, {

    _className: "MEMOZ.grouplist",

    allowAddGroup: false,
    groupFinderTmp: '',
    
    listEl: null,
    
    groups: [],
    
    /*
    	Method: setAllowAddGroup
    	Parameters:
    		allowAddGroup - <bool>
    */
    setAllowAddGroup: function(allowAddGroup) {
        this.allowAddGroup = allowAddGroup;
    },
    
    /*
    	Method: setGroups
    	Parameters:
    		groups - [array]
    */
    setGroups: function(groups) {
        this.groups = groups;
    },
    
    /*
    	Method: drawGroup
    	Adds a list item with the clickable group name to the DOM
    	
    	Parameters:
    		obj - object
    */
    drawGroup: function(obj) {
    	var me = this;
		var liEl = document.createElement('li');
		liEl.id = 'grouplistitem'+obj.id;
		liEl.innerHTML = "<a id='grouplink"+obj.id+"' href='./?group="+obj.id+"'>"+obj.name +
			" <span style='font-size: 80%; color: #999;'>("+obj.membercount+" medlemmer)</span>" + 
			"</a>";
        
        //("+this.groups[i].membercount+" medlemmer)
        /*
        YAHOO.util.Event.on('memozlink'+obj.id,'click',function(e, obj) { 
        	me.selectUser(obj.id); 
        }, {id: obj.id});
		*/
		this.listEl.appendChild(liEl);		
	},
        
    run: function() {
    
    	var me = this;
    	
    	this.listEl = $('grouplistUl');
    	for (var i = 0; i < this.groups.length; i++) {
    		this.drawGroup(this.groups[i]);
    	}    	
    	
		this.dlgAddGroup = new MEMOZ.dialog(
			'dlgAddGroup', {ref: me, fn: 'groupAdded'}, { action: 'addGroup', groupId: 0 }, [
			{ type: 'text', id: 'Name', def: '', submitAs: 'groupName', focus: true }
		]);
    		
		// Initialize buttons

		if (this.allowAddGroup) {
            this.btnAddGroup = new YAHOO.widget.Button('btnAddGroup', {
                onclick: { fn: function() { me.dlgAddGroup.show(); }}
            });
        } else {
        	YAHOO.util.Dom.setStyle('btnAddGroup','display','none');
        }
        
    	// Memoz finder
        
        YAHOO.util.Event.on('groupFinder','focus',function() { me.startGroupFinder(); });
        YAHOO.util.Event.on('groupFinder','blur',function() { me.endGroupFinder(); });
        
    },
    
    groupAdded: function(json) {

    	if (json.error == 0) {
			this.groups.push( { id: json.id, name: json.name, membercount: 1 } );
			this.drawGroup(this.groups[this.groups.length-1]);
		}
    
    },
    
    startGroupFinder: function() {
    	var me = this;
    	this.groupFinderInt = setInterval(function() { me.groupFinder(); }, 100);
    },
    
    endGroupFinder: function() {
    	var me = this;
    	clearInterval(this.groupFinderInt);
    },  
    
    groupFinder: function() {

		var groupname = $('groupFinder').value;
		if (groupname == this.groupFinderTmp) return;
		this.groupFinderTmp = groupname;

		var rExp = new RegExp(groupname,'i');
		var group;
		for (var i = 0; i < this.groups.length; i++) {
			if (group = this.groups[i]) {
				if (groupname == '' || group.name.search(rExp) > -1) {
					YAHOO.util.Dom.setStyle('grouplistitem'+group.id,'display','');
				} else {
					YAHOO.util.Dom.setStyle('grouplistitem'+group.id,'display','none');
				}
			}
		}
    
    }

});
