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

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

    _className: "MEMOZ.networklist",

    allowAddNetwork: false,
    networkFinderTmp: '',
    listEl: null,
    
    networks: [],
    
    /*
    	Method: setAllowAddNetwork
    	Parameters:
    		allowAddNetwork - <bool>
    */
    setAllowAddNetwork: function(allowAddNetwork) {
        this.allowAddNetwork = allowAddNetwork;
    },
    
    /*
    	Method: setNetworks
    	Parameters:
    		networks - [array]
    */
    setNetworks: function(networks) {
        this.networks = networks;
    },
    
    /*
    	Method: drawNetwork
    	Adds a list item with the clickable network name to the DOM
    	
    	Parameters:
    		obj - object
    */
    drawNetwork: function(obj) {
    	var me = this;
		var liEl = document.createElement('li');
		liEl.id = 'networklistitem'+obj.id;
		liEl.innerHTML = "<a id='networklink"+obj.id+"' href='./?network="+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 = $('networklistUl');
    	for (var i = 0; i < this.networks.length; i++) {
    		this.drawNetwork(this.networks[i]);
    	}    	

		this.dlgAddNetwork = new MEMOZ.dialog(
			'dlgAddNetwork', {ref: me, fn: 'networkAdded'}, { action: 'addNetwork' }, [
			{ type: 'text', id: 'Name', def: '', submitAs: 'networkName', focus: true }
		]);
    		
		// Initialize buttons

		if (this.allowAddNetwork) {
            this.btnAddNetwork = new YAHOO.widget.Button('btnAddNetwork', {
                onclick: { fn: function() { me.dlgAddNetwork.show(); }}
            });
        } else {
        	YAHOO.util.Dom.setStyle('btnAddNetwork','display','none');
        }
        
    	// Memoz finder
        
        YAHOO.util.Event.on('networkFinder','focus',function() { me.startNetworkFinder(); });
        YAHOO.util.Event.on('networkFinder','blur',function() { me.endNetworkFinder(); });
        
    },
    
    networkAdded: function(json) {

    	if (json.error == 0) {
			this.networks.push( { id: json.id, name: json.name } );
			this.drawNetworks(this.networks[this.networks.length-1]);
		}
    
    },
    
    startNetworkFinder: function() {
    	var me = this;
    	this.networkFinderInt = setInterval(function() { me.networkFinder(); }, 100);
    },
    
    endNetworkFinder: function() {
    	clearInterval(this.networkFinderInt);
    },  
    
    networkFinder: function() {

		var networkname = $('networkFinder').value;
		if (networkname == this.networkFinderTmp) return;
		this.networkFinderTmp = networkname;

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

});
