Ext.ns('Sight');
Sight.TagCloudPanel = Ext.extend(Ext.Panel, {
	serviceURL: '/sight?service=news&operation=list_tags',    
    createTagTemplate:function() {
        return new Ext.XTemplate('<div class="fragment"><table width="98%"><tr><td><div class="fragment-title">Tag Cloud</div></td></tr><tr><td><div class="fragment-content"><tpl for="tags"><a class="tag s{intensity}" href="#" title="#{count} entries" onclick="Sight.app.handleTagClicked(\'{name}\'); return false;">{name}</a> </tpl></div></td></tr></table></div>');
    },    
    cls:'tagcloud',
    width:'100%',
    margins:'0 0 0 0',
    border:false,
    layout:'fit'

    ,initComponent:function() {
		
        var tagStore = new Ext.data.Store({
            proxy: new Ext.data.HttpProxy({
                url: this.serviceURL
            }),
            reader: new Ext.data.JsonReader({
                root: 'data',
                totalProperty: 'count',
                fields: [
                'id',
                'name',
                'count',
                'intensity'
                ]
            })
        });
    	
        var panel=this;
        tagStore.on({
            'load':{
                fn: function(myStore, records, options){
                    //store is loaded, now you can work with it's records, etc.
                    //console.log('Data Store listener fired (load), arguments:',arguments);
                    //console.log('Store count = ',store.getCount());
                    var tags=[];
                    var i=0;
                    myStore.each(function(record) {
                        tags[i++]= {
                            'name': record.get('name'),
                            'intensity': record.get('intensity'),
                            'count' : record.get('count')
                            };
                    }, this);
                    var tpl = panel.createTagTemplate();
                    tpl.overwrite(panel.body, {
                            tags:tags
                    });
                } ,scope:this
            }
        });
    	
        Ext.apply(this, {
            store:tagStore
        });
		
        Sight.TagCloudPanel.superclass.initComponent.apply(this, arguments);
        
    } // eo function initComponent
    ,refreshTagList:function() {
      this.store.load();
    } // eo refreshTagList
});
 
Ext.reg('tagcloudpanel', Sight.TagCloudPanel);
