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

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

    _className: "MEMOZ.fabulazlist",

    allowAddFabulaz: false,
    fabulazFinderTmp: '',
    fabulazes: [],
    
    listEl: null,
    
    /*
    	Method: setAllowAddFabulaz
    	Parameters:
    		allowAddFabulaz - <bool>
    */
    setAllowAddFabulaz: function(allowAddFabulaz) {
        this.allowAddFabulaz = allowAddFabulaz;
    },

    /*
    	Method: setFabulazes
    	Parameters:
    		fabulazes - [array]
    */
    setFabulazes: function(fabulazes) {
        this.fabulazes = fabulazes;
    },
    
    /*
    	Method: drawFabulaz
    	Adds a list item with the clickable fabulaz name to the DOM
    	
    	Parameters:
    		obj - object
    */
    drawFabulaz: function(obj) {
    	var me = this;
		var liEl = document.createElement('li');
		liEl.id = 'fabulazlistitem'+obj.id;
		liEl.innerHTML = "<a id='fabulazlink"+obj.id+"' href='./?memozvideo="+obj.id+"'>"+obj.name + 
			" <span style='font-size: 80%; color: #999;'>("+obj.owner.name+")</span>" + 
			"</a>";
        /*
        YAHOO.util.Event.on('fabulazlink'+obj.id,'click',function(e, obj) { 
        	me.selectUser(obj.id); 
        }, {id: obj.id});
		*/
		this.listEl.appendChild(liEl);		
	},
        
    run: function() {
    
    	var me = this;
    	
    	this.listEl = $('fabulazlistUl');
    	for (var i = 0; i < this.fabulazes.length; i++) {
    		this.drawFabulaz(this.fabulazes[i]);
    	}    	

		this.dlgAddFabulaz = new MEMOZ.dialog(
			'dlgAddFabulaz', {ref: me, fn: 'fabulazAdded'}, { action: 'addFabulaz', groupId: 0 }, [
			{ type: 'text', id: 'Name', def: '', submitAs: 'fabulazName', focus: true }
		]);
    		
		// Initialize buttons

		if (this.allowAddFabulaz) {
            this.btnAddFabulaz = new YAHOO.widget.Button('btnAddFabulaz', {
                onclick: { fn: function() { me.dlgAddFabulaz.show(); }}
            });
        } else {
        	YAHOO.util.Dom.setStyle('btnAddFabulaz','display','none');
        }
        
        // Fabulaz finder
        
        YAHOO.util.Event.on('fabulazFinder','focus',function() { me.startFabulazFinder(); });
        YAHOO.util.Event.on('fabulazFinder','blur',function() { me.endFabulazFinder(); });
        
    },

	fabulazAdded: function(json) {

    	if (json.error == 0) {
			this.fabulazes.push( { id: json.id, name: json.name } );
			this.drawFabulaz(this.fabulazes[this.fabulazes.length-1]);
		}
    
    },
    
    startFabulazFinder: function() {
    	var me = this;
    	this.fabulazFinderInt = setInterval(function() { me.fabulazFinder(); }, 100);
    },
    
    endFabulazFinder: function() {
    	var me = this;
    	clearInterval(this.fabulazFinderInt);
    },  
    
    fabulazesFinder: function() {

		var fabulazname = $('fabulazFinder').value;
		if (fabulazname == this.fabulazFinderTmp) return;
		this.fabulazFinderTmp = fabulazname;

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

});
