Toolbar = function(){
	var loginBtn;
	var addBtn;	
	var addMenu;
	var forumBtn;
	var timelineBtn;
	var searchYouTubeBtn;
	var testBtn;
	var blogBtn;
	var suggestBtn;
	var tb;
	return {
		init: function(){
			this.loginBtn = new Ext.Toolbar.Button({
		            text: 'Login',
		            handler: this.onLoginButtonClick,
		            cls: 'x-btn-text-icon loginbutton'
		        });				
		   
			this.forumBtn = new Ext.Toolbar.Button({
		            text: 'Forums',
		            handler: this.onForumButtonClick,
		            cls: 'x-btn-text-icon forumbutton'
		        });				
		    
		    this.searchYouTubeBtn = new Ext.Toolbar.Button({
		            text: 'Search YouTube',
		            handler: this.onSearchYouTubeButtonClick,
		            cls: 'x-btn-text-icon blist'
		        });				
		   	
		   	this.timelineBtn = new Ext.Toolbar.Button({
		            text: 'Show Timeline',
		            enableToggle: true,
        			toggleHandler: this.onTimelineToggle,
        			pressed: true,
        			cls: 'x-btn-text-icon blist'
		        });	
		    this.blogBtn = new Ext.Toolbar.Button({
		            text: 'Blog',
		            handler: this.onBlogButtonClick,
		            cls: 'x-btn-text-icon blogbutton'
		        });    
		    this.suggestBtn = new Ext.Toolbar.Button({
		            text: 'Suggest Video',
		            handler: this.onSuggestButtonClick,
		            cls: 'x-btn-text-icon blist'
		        });    
		   
		   this.testBtn = new Ext.Toolbar.Button({
		            text: 'Test',
		            handler: this.onTestButtonClick,
		            cls: 'x-btn-text-icon blist'
		        });
		   							
			Toolbar.tb = new Ext.Toolbar('toolbar');
	    	
	    	Toolbar.tb.add(this.loginBtn);
			Toolbar.tb.add(this.blogBtn);
	    	Toolbar.tb.add(this.forumBtn);
			Toolbar.tb.add(this.searchYouTubeBtn);
			Toolbar.tb.add(this.suggestBtn);
			
			//Toolbar.tb.add(this.testBtn);			
    		Toolbar.tb.add(this.timelineBtn);
			
			Application.updateLoggedInStatus();
		},
		    	
    	
    	addLoggedInToolbarItems : function() {
    		if (Toolbar.addMenu == null) {
	    		Toolbar.addMenu = new Ext.menu.Menu();
    		}
		    
		    if (Toolbar.addBtn == null){
				Toolbar.addBtn = new Ext.Toolbar.MenuButton({
			            id: 'addVideo',
			            text: 'Add Video Link',
			            disabled: 'false',
			            handler: Toolbar.onButtonClick,
			            cls: 'x-btn-text-icon blist',
			            menu : Toolbar.addMenu
			        });
			    Toolbar.tb.add(Toolbar.addBtn);
		    } else {
		    	Toolbar.tb.items.get('addVideo').enable();
		    }
    	},
    	
    	removeLoggedInToolbarItems: function() {
    		if (Toolbar.tb.items.containsKey('addVideo'))
	    		Toolbar.tb.items.get('addVideo').disable();
    	},
    	
    	
    	addAdminMenuItems : function() {
    		addByTagBtn = Toolbar.addMenu.items.get('addVideoByTag');
    		if (addByTagBtn == null) {
				
				Toolbar.addBtn.enable();
				if (Toolbar.addVideoByTagItem == null) {
					Toolbar.addVideoByTagItem = Toolbar.addMenu.add({
								id: 'addVideoByTag',
								text: 'Add by Tag',
							    handler: Toolbar.onItemClick
					});				
				}
    		}

    	},    	
    	
    	removeAdminMenuItems : function() {
    		
    		addByTagBtn = Toolbar.tb.addMenu.items.get('addVideoByTag');
    		if (addByTagBtn != null) {
				
				Toolbar.tb.addMenu.items.removeKey('addVideoByTag');
				Toolbar.tb.addBtn.disable();
							
    		}

    	},    	
    	
		onTimelineToggle : function (item, pressed) {
			if (pressed){
				Application.showTimeline();				
			} else
			{
				Application.hideTimeline();
			}
		},

		onItemClick : function (item){
			if (item.text == 'Add by Tag') {
				VideoManager.addVideoByTag();
			}
		},

    	onButtonClick : function (btn){
        	VideoManager.addVideo();
    	},

    	onLoginButtonClick : function (btn){
        	Application.showDialog('Login','login');         	
        	//Login.showLoginDialog();
        	urchinTracker('/app/login');
    	},

    	onBlogButtonClick : function (btn){
        	Application.loadInTab('Blog',Application.baseUrl + 'blog');        	
        	urchinTracker('/app/blog');
    	},

    	onSuggestButtonClick : function (btn){
        	VideoManager.suggestVideo();
    	},

    	onForumButtonClick : function (btn){
        	Application.loadInTab('Forums','/forum/index.php?t=index');        	
        	urchinTracker('/app/forum');
    	},

		onSearchYouTubeButtonClick : function (btn){
        	Application.loadInTab('Search YouTube','http://www.youtube.com/results?search_type=search_videos&search_query=f1&search_sort=video_date_uploaded&search_category=0');        	
        	urchinTracker('/app/searchYouTube');
    	},    	    	
    	onTestButtonClick : function (btn){
        	Application.loadInTab('Comments -', 'http://formulatube.com/videos/comments/videoid/1200');
    	},  
    	setLoginButtonText : function (text){
    		Toolbar.loginBtn.setText(text);
    	}
    
	}
}();
Ext.EventManager.onDocumentReady(Toolbar.init, Toolbar, true);

TimelineToolbar = function(){
	var zoomInBtn;
	var zoomOutBtn;
	var addBtn;	
	var addMenu;
	return {
		init: function(){
			this.zoomInBtn = new Ext.Toolbar.Button({
		            text: 'Zoom In',
		            handler: this.onZoomInClick,
		            cls: 'x-btn-text-icon zoomin'
		        });				
			this.zoomOutBtn = new Ext.Toolbar.Button({
		            text: 'Zoom Out',
		            handler: this.onZoomOutClick,
		            cls: 'x-btn-text-icon zoomout'
		        });				
		    
										
			var tb = new Ext.Toolbar('timelinetoolbar');
	    	
	    	tb.add(this.zoomOutBtn, this.zoomInBtn);
			
		},
		
		onZoomInClick : function (btn){
        	MyTimeline.zoomIn();
        	urchinTracker('/timeline/zoomin');
    	},
    	
    	onZoomOutClick : function (btn){
        	MyTimeline.zoomOut();
        	urchinTracker('/timeline/zoomout');
    	}
    	    			
	}
}();
Ext.EventManager.onDocumentReady(TimelineToolbar.init, TimelineToolbar, true);	

VideoToolbar = function(){
	var searchBtn;
	var sortBtn;
	var	ssFilterBox;
    var sortFieldsMenuItems;
	return {
		init: function(){
													
			var tb = new Ext.Toolbar('videotoolbar');
	    		    	
			//Add the filter combo and buttons
			var filterFieldsMenuItems = [
			'<b class="menu-title">Video Search Columns</b>',
			new Ext.menu.CheckItem({ text: 'Title', checked: true }),
			new Ext.menu.CheckItem({ text: 'Tags', checked: true }),
			new Ext.menu.CheckItem({ text: 'Description', checked: true })
		    ];
		    
		    var filterFieldsMenu = new Ext.menu.Menu({
			id: 'filterFieldsMenu',
			items: filterFieldsMenuItems
		    });
			
			tb.add({
				text: 'Video Search',
				tooltip: 'Search all videos',				
				cls: 'x-btn-text-icon zoomin',
				menu: filterFieldsMenu
			    });
			
			//Experimental search in toolbar
			var sstb = tb.addDom({
				tag: 'input',
				id: 'ssfilter',
				type: 'text',
				size: 30,
				value: '',
				style: 'background: #F0F0F9;'
			});
			var sstblabel = tb.addDom({
				tag: 'div',
				id: 'ssfilterlabel'
			});
			
			this,ssFilterBox = new Ext.form.HistoryComboBox({
				emptyText: "No filter",
				dummyData: false
			});
			ssFilterBox.applyTo('ssfilter');
			
			ssFilterBox.on("valueChange", function(e) {
				var value = ssFilterBox.getValue();
				if (!value || value=='')  {
					Ext.get('ssfilterlabel').update("");
	    			return;
				} else if (value.length>0) {	    			
	    			Ext.get('ssfilterlabel').update('- filtered by "' + value + '"');
	    		} else {
				    Ext.get('ssfilterlabel').update("");
				}
				//get the fields they are filtering on
				var fields = '';
				for (var i=0,items=filterFieldsMenuItems,len=items.length; i<len; i++){
            	        if (items[i].checked) {
						    fields = fields + items[i].text.toLowerCase() + ';';
						}
		    	}		    	
		    	if (fields == ''){
		    		Message.msg('Error','You must filter by at least one field');	
		    		return;
		    	}
		    	VideoManager.setSearchFields(fields);
				VideoManager.updateVideoListFromSearch(value, 1);
			    urchinTracker('/videolist/search');
    		});

			
			//Setup the sortby menu
			this.sortFieldsMenuItems = [
			'<b class="menu-title">Video Sort Columns</b>',
			new Ext.menu.CheckItem({ text: 'Date uploaded descending', checked: true, group: 'sort', checkHandler: VideoToolbar.onSortItemCheck }),
			new Ext.menu.CheckItem({ text: 'Date uploaded ascending', checked: false, group: 'sort', checkHandler: VideoToolbar.onSortItemCheck }),
			new Ext.menu.CheckItem({ text: 'Highest Rating', checked: false, group: 'sort', checkHandler: VideoToolbar.onSortItemCheck }),
			new Ext.menu.CheckItem({ text: 'Most watched', checked: false, group: 'sort', checkHandler: VideoToolbar.onSortItemCheck })
		    ];
		    
		    var sortFieldsMenu = new Ext.menu.Menu({
			id: 'sortFieldsMenu',
			items: this.sortFieldsMenuItems
		    });
			
			tb.add({
				text: 'Sort',
				tooltip: 'Change the default sort order',				
				cls: 'x-btn-text-icon sort',
				menu: sortFieldsMenu
			    });
						
			var sstblabel = tb.addDom({
				tag: 'div',
				id: 'ssSortlabel'
			});

			tb.add({
				text: 'RSS Feed',
				tooltip: 'Get the RSS feed for this category',				
				cls: 'x-btn-text-icon rss',
				handler: this.onRssButtonClick
			    });

			
			this.testBtn = new Ext.Toolbar.Button({
		            text: 'Test',
		            handler: this.onTestButtonClick,
		            cls: 'x-btn-text-icon blist'
		        });
			

						
		},
		
		onRssButtonClick: function(){
			window.open('http://feeds.formulatube.com/feeds/byNode/nodeid/' + VideoManager.currentNodeId);
			urchinTracker('/rss/buttonclicked');
		},
		
		onSortItemCheck: function(item, checked){
	        //Message.msg('Item Check', 'You {1} the "{0}" menu item.', item.text, checked ? 'checked' : 'unchecked');
	        var fields = '';
				for (var i=0,items=VideoToolbar.sortFieldsMenuItems,len=items.length; i<len; i++){
            	        if (items[i].checked) {
						    fields = items[i].text.toLowerCase();
						    Ext.get('ssSortlabel').update('- sorted by "' + fields + '"');
						    VideoManager.setSortFields(fields);
					        VideoManager.updateList();
					        break;						    
						}
		    }		
		    urchinTracker('/videolist/sort');
    	},
    	
    	clearSearch : function(){
    		ssFilterBox.clearValue();
    	}    	    			
	}
}();
Ext.EventManager.onDocumentReady(VideoToolbar.init, VideoToolbar, true);	

