// create namespace
Ext.namespace('Sight');
 
// create application
Sight.app = function() {
    // do NOT access DOM from here; elements don't exist yet
    // ----------------------------------- private variables
   
   
 	
    // ----------------------------------- public space
    return {
    	 
    	handleTagClicked : function(tag) {
    	    		    	
    		var tabsPanel = Ext.getCmp('contenttabspanel');
    		var panel = tabsPanel.findById('newspanel_'+tag);
    		if (panel) {
    			panel.show();
    		} else {
    			var id = 'newspanel_'+tag;
    			var serviceURL = '/sight?service=news&operation=list4tag'+'&tag='+tag;
    			var title = '<span class="label-element">News ['+tag+']</span>';
    			var pageSize = Sight.configutil.findParameter('news', 'maxNumberInPortal');
    			var newsPanel = new Sight.NewsViewGridPanel({       
    				serviceURL: serviceURL,
    				id:id,	  
    				title: title,
    				iconCls : 'tabs',
    				closable : true,
    				border : false,
    				pageSize: pageSize,
    				margins : '0 0 0 0',
    				cmargins : '0 0 0 0',
    				border:true,
    				enableTabScroll : true,
    				header : false,
    				defaults : {
						autoScroll : true
					}							
    			});
    			
    			tabsPanel.add(newsPanel);
    			newsPanel.store.load({params:{start:0, limit:pageSize}});
    			newsPanel.show();
    		}
    	}
    	,content : function(id) {
    	    		    	
    		var tabsPanel = Ext.getCmp('contenttabspanel');
    		var panel = tabsPanel.findById('contentpanel_'+id);
    		if (panel) {
    			panel.show();
    		} else {    			     			    			
    			var contentPanel = new Sight.ContentPanel({           				
    				id:'contentpanel_'+id,	      				
    				iconCls : 'tabs',
    				closable : true,
    				border : false,    				
    				margins : '0 0 0 0',
    				cmargins : '0 0 0 0',
    				border:true,
    				enableTabScroll : true,
    				header : false,
    				defaults : {
						autoScroll : true
					}							
    			});
    			
    			tabsPanel.add(contentPanel);
    			contentPanel.load('content', id, '/sight?service=content&operation=get&cid=');    			
    		}
    	}
    	,news : function(id) {
	    	
    		var tabsPanel = Ext.getCmp('contenttabspanel');
    		var panel = tabsPanel.findById('newspanel_'+id);
    		if (panel) {
    			panel.show();
    		} else {    			     			    			
    			var newsPanel = new Sight.ContentPanel({           				
    				id:'newspanel_'+id,	      				
    				iconCls : 'tabs',
    				closable : true,
    				border : false,    				
    				margins : '0 0 0 0',
    				cmargins : '0 0 0 0',
    				border:true,
    				enableTabScroll : true,
    				header : false,
    				defaults : {
						autoScroll : true
					}							
    			});
    			
    			tabsPanel.add(newsPanel);
    			newsPanel.load('news', id, '/sight?service=news&operation=get&cid=');    			
    		}
    	}
        , init: function() {
            try {
            	
            	var initUI = function() {
            		
            		var pageSize = Sight.configutil.findParameter('news', 'maxNumberInPortal');
            		                       		
	                var headerPanel = {
	                    region:'north',
	                    toolBarEl:'mainmenu',
	                    border:false,
	                    xtype:'headerpanel'
	                };
	                
	                var footerPanel = {
	                    region: 'south',
	                    xtype:'footerpanel'
	                };
	                                   	             	               
	                var tagCloudPanel = new Sight.TagCloudPanel({	                    	                                      
	                    id:'tagcloud-panel',
	                	margins:'0 0 0 0',	                    	                    	                    
	                    border:false
	                });
	                tagCloudPanel.refreshTagList();
	    			
	                var creditPanel = new Ext.Panel({
	                    id:'east-panel',	                                        
	                    margins:'0 0 0 0',	                    
	                    border : false,	                    
	                    contentEl: 'welcome'	                    
	                });
	                
	                var rightPanel = new Ext.Panel({                	
	                	id:'right-panel',
	                    title:'<div class="label-element">Archives</div>',	                    	                    						
						margins : '0 0 0 0',
						cmargins : '0 0 0 0',
						frame:true,
	                    items:[tagCloudPanel, creditPanel]
	                });
	                
	                var newsPanel = new Sight.NewsViewGridPanel({       
	                	id:'newspanel',	  
	                	title:'<div class="label-element">News</div>',
	                	iconCls : 'tabs',
						closable : false,
	                	border : false,
	                	pageSize: pageSize,
						margins : '0 0 0 0',
						cmargins : '0 0 0 0',
						border:true,
						frame:true,
						enableTabScroll : true,
						header : false,
						defaults : {
							autoScroll : true
						}							
					});
	              	              	                
	                var contentTabsPanel = new Ext.TabPanel({
	                	id:'contenttabspanel',
	                	activeTab : 0,   
	                	deferredRender: false,   
	                	autoTabs : true, 
	                	region:'center',
						border : false,
						margins : '0 0 0 0',
						cmargins : '0 0 0 0',
						width : 400,
						height : 455,
						minTabWidth : 115,
						tabWidth : 130,
						enableTabScroll : true,
						header : false,
						frame : true,
						defaults : {
							autoScroll : true
						},					
						plugins : new Ext.ux.TabCloseMenu()
					});
	                contentTabsPanel.add(newsPanel);
	                
	                var rightTabsPanel = new Ext.TabPanel({
	                	id:'righttabspanel',
	                	activeTab : 0,   
	                	deferredRender: false,   
	                	autoTabs : true, 
	                	region:'east',
						border : false,
						margins : '0 0 0 0',
						cmargins : '0 0 0 0',
						width : 250,
						height : 455,
						minTabWidth : 115,
						tabWidth : 130,
						enableTabScroll : true,
						header : false,
						frame : true,
						defaults : {
							autoScroll : true
						},					
						plugins : new Ext.ux.TabCloseMenu()
					});
	                rightTabsPanel.add(rightPanel);
	                
	                var viewport = new Ext.Viewport({
	                    layout:'border',
	                    items:[headerPanel,                  
	                           contentTabsPanel,
	                           rightTabsPanel,
	                           footerPanel
	                    ]
	                });
	                
	                if ((s_type)&&(s_id)) {
	                	if (s_type=='content') {
	                		Sight.app.content(s_id);
	                	} else if (s_type=='news') {
	                		Sight.app.news(s_id);
	                	}
	                }
	                viewport.render();
	                	                			
            	}
            	
            	Ext.QuickTips.init();
				Sight.util.applyPatches();												
				Ext.Ajax.request({
					url : '/sight?service=config&operation=get&name=news',
					success : function(response) {
						var object = Ext.util.JSON.decode(response.responseText);
						if (object.success) {
							var config = object.data;									
							Sight.configutil.addConfig('news',config);
							initUI();
							var newsPanel = Ext.getCmp('newspanel');
							newsPanel.refresh();
						}
					},
					failure : Sight.util.requestFailed
				});
           		
    		    			
                //alert('Application successfully initialized');
            } catch(e) {
                //alert('Error: "' + e.message + '" at line: ' + e.lineNumber);
                alert('Error: "' + e.message);
            }
        }
    };
}(); // end of app

// Start the application
Ext.onReady(Sight.app.init, Sight.app);
 
// end of file
