myRSNApath = '/';

function handleBookmarkLeftClick(node,e){
	if(node.attributes.mm_key != ''){
		createTreeNode(node.attributes.mm_key,'handleBookmarkMFView');
	}else{
		var treenode = createBookmarkNode(node);
		handleFileClick('',treenode,true,false);
	}
}

function handleBookmarkdblClick(node,theevent){
	var h = getHeight()-50;
	var w = getWidth()-50;

	if(node.attributes.node_type != 'FOLDER'){
		if(node.attributes.bm_web != 'Y' && node.attributes.node_type != 'URL'){
//			Ext.Msg.alert('Notice', 'This presentation is not available online.');
			var msg = '';
			if(node.attributes.node_type.substr(0,7) == 'DPS2009'){
				msg = 'This bookmark is currently only available at RSNA 2009.';
			}else{
				msg = 'This presentation is not available online.';
			}
			
			Ext.Msg.show({
					title: 'Notice'
					,msg:'<div align="center">'+msg+'</div>'
					,minWidth:250
					,buttons: Ext.MessageBox.OK
			});
		}else if(node.attributes.bm_url.search('lakeside2007') >= 0){
			window.open(node.attributes.bm_url,"lakeside2007","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,width=1024,height=768,left=0,top=0");	
		}else{
			if(node.attributes.mm_key != ''){			
				createTreeNode(node.attributes.mm_key,'handleBookmarkMFViewWindow');
			}else{
				var h = (node.attributes.bm_height == '' ? h : node.attributes.bm_height + 50);
				var w = (node.attributes.bm_width == '' ? w : node.attributes.bm_width + 30);
				
				if(node.attributes.bm_url.search('rsnajnls') >= 0 && node.attributes.bm_url.search('jpeg') < 0 && node.attributes.bm_url.search('/myfiles/viewURL.cfm') < 0){
					var URL = myRSNApath + 'myfiles/viewURL.cfm?link='+escape(node.attributes.bm_url);
					
				}else{
					var URL = node.attributes.bm_url;
				}
				
				launchExtWindow(URL,node.attributes.text,h,w,node.attributes.iconCls);	
			}
		}	
	}
}


function bookmark_popup(bm_type,bm_source,bm_descr,bm_url,media_id){
	var theforms = bookmark_popup_forms(bm_type,bm_descr,bm_url,bm_source,media_id);
	
	var bm_window = new Ext.Window(
		{
			id:'bm_window',
			title:'Add a Bookmark',
			width:375,
			autoHeight:true,
			autoScroll:true,
			modal:true,
			iconCls:'bm-add-url',
			shadow:false
			,items:theforms
		}
	).show();	
}

function bookmark_popup_forms(bm_type,bm_descr,bm_url,bm_source,mm_key){
	mm_key = Ext.value(mm_key,'');
	bm_url = Ext.value(bm_url,'');
	if(bm_url == '' && mm_key != ''){bm_url = mediapath+'myfiledisplay.cfm?q='+mm_key;}
	var hide_URL = (bm_url == '' && mm_key == '' ? false : true);

	var tab = myrsnatabs.getActiveTab();
	if(tab.title == 'myBookmarks'){
		var treenode = my_bookmarks.getSelectionModel().getSelectedNode();
		var treenode_type = treenode.attributes.node_type;

		if(treenode.id == 'isroot' || (treenode_type != 'FOLDER' && treenode.parentNode.id == 'isRoot')){
			var parent_id = '0';
			var combox_selID = 'isroot';
			var combox_title = 'myBookmarks';
		}else if(treenode_type == 'FOLDER'){
			var parent_id = treenode.attributes.id;
			var combox_selID = 'folder_'+parent_id;	
			var combox_title = treenode.attributes.text;
		}else{
			var parent_id = treenode.parentNode.attributes.id;
			var combox_selID = 'folder_'+parent_id;
			var combox_title = treenode.parentNode.attributes.text;
		}
		
		if(parent_id == 'isroot'){parent_id = '0';}
	}else{
		var combox_title = 'myBookmarks';	
		var combox_selID = 'isroot';
	}
	
	var folder_combox = new Ext.form.ComboBox({
		id:'bm_folder',
		store:new Ext.data.SimpleStore({fields:[],data:[[]]}),
		fieldLabel: 'Folder',
		labelStyle: 'font-size:12px; font-weight:bold; width:75px;',
		editable:false,
		emptyText:combox_title,
		forceSelection:true,
		mode: 'local',
		triggerAction:'all',
		width:250,
		maxHeight: 200,
		tpl: '<tpl for="."><div style="height:200px"><div id="folder_tree"></div></div></tpl>',
		selectedClass:'',
		onSelect:Ext.emptyFn
	});

	var folder_tree = new Ext.tree.TreePanel({
		border:false,
		loader: new Ext.tree.TreeLoader({
            	dataUrl:myRSNApath + 'plugins/my_bookmarks/tree_loader.cfm'
			,baseParams:{folder_only:'YES'}
			,clearOnLoad:true
			,listeners:{'load':function(theloader,thenode,theresponse){
							var new_folder_node = new Ext.tree.AsyncTreeNode({
								id:'folder_0'
								,bm_id:'-1'
								,iconCls:'FOLDER-bm'
								,text:'Add a new folder...'
								,leaf:true
							});
							thenode.insertBefore(new_folder_node,thenode.firstChild);
							folder_tree.getNodeById(combox_selID).select();
						}
			}
        })
	});
	
    var folder_tree_root = new Ext.tree.AsyncTreeNode({
		id: 'isroot',
		bm_id:'0',
		iconCls:'FOLDER-bm',
        	text: 'myBookmarks',
        	draggable:false,
		expanded:true
    });
    folder_tree.setRootNode(folder_tree_root);	
    
	var editor = new Ext.tree.TreeEditor(folder_tree, new Ext.form.TextField({id:'new_folder_field'}),
     	{
      		allowBlank: false,
			cancelOnEsc: true,
      		completeOnEnter: true,
        		autosize: true
     	});
	
	// Ext wasn't recognizing these events when I had them as listeners, but manually adding seems to work.
	editor.on('beforestartedit',function(editor,temp,value){return (folder_tree.getSelectionModel().getSelectedNode().id == 'folder_0' ? true : false);});
	editor.on('startedit',function(bel,value){this.setValue('New Folder');});
	editor.on('complete',function(editor,value,startValue){
									if(value.trim() == ''){
										return false;
									}else{
										basic_form.findById('new_bm_folder').setValue(value);
										folder_combox.setValue(value);
										folder_combox.collapse();
									}
								}// close function
			);
	
	folder_tree.on('click',function(node){
		basic_form.findById('parent_id').setValue(node.attributes.bm_id);

		var new_folder = basic_form.findById('new_bm_folder');
		if(node.id == 'folder_0'){
			editor.triggerEdit(node);
		}else{
			new_folder.setValue('');
			folder_combox.setValue(node.text);
			folder_combox.collapse();
		}
	});

	folder_combox.on('expand',function(){
		folder_tree.render('folder_tree');
	});
	
	
	var basic_form = new Ext.FormPanel({
					formId:'basic_bm_form'
					,baseParams:{action:'ADD'}			
					,hidden:true
					,items:[
							new Ext.form.Hidden({
							id:'parent_id',
							name:'parent_id',
							value:''
							})
							,new Ext.form.Hidden({
							id:'new_bm_folder',
							name:'new_bm_folder',
							value:''
							})
							,new Ext.form.Hidden({
							id:'bm_url',
							name:'bm_url',
							value:''
							})
							,new Ext.form.Hidden({
							id:'bm_descr',
							name:'bm_descr',
							value:''
							})
							,new Ext.form.Hidden({
							id:'bm_type',
							name:'bm_type',
							value:bm_type
							})
							,new Ext.form.Hidden({
							id:'mm_key',
							name:'mm_key',
							value:mm_key
							})	
						   ]
				});

	var bm_form = new Ext.FormPanel({
					formId:'bm_popup_form',
					labelWidth: 75, // label settings here cascade unless overridden
					frame:true,
					autoWidth:true,
			
					items:[
						  folder_combox			
						
						,new Ext.form.TextArea({
						id:'bm_descr_field',
						fieldLabel:'Title',
						labelStyle: 'font-size:12px; font-weight:bold; width:75px;',
						name:'bm_descr',
						value:bm_descr,
						allowBlank:false,
						blankText:'Please enter a title for this bookmark.',
						selectOnFocus:true,
						width:250})
						
						,new Ext.form.TextField({
						id:'bm_url_field',
						fieldLabel:'URL',
						labelStyle: 'font-size:12px; font-weight:bold; width:75px;',
						name:'bm_url',
						value:bm_url,
						hidden:hide_URL,
						hideLabel:hide_URL,
						allowBlank:false,
						blankText:'Please enter a URL for this bookmark.',
						width:250})
					],
					
					buttons: [{
						text: 'Add'
						,handler:function(){ 
							var validated = false;

							var new_folder = basic_form.findById('new_bm_folder');
							var parent_id = basic_form.findById('parent_id');
							var bm_title = basic_form.findById('bm_descr');
							bm_title.setValue(bm_form.findById('bm_descr_field').getValue());
							var bm_url = basic_form.findById('bm_url');
							bm_url.setValue(bm_form.findById('bm_url_field').getValue());
							var selNode = folder_tree.getSelectionModel().getSelectedNode();

							if(selNode == null || parent_id.getValue().trim() == ''){
								if(combox_selID == 'isroot'){
									parent_id.setValue('0');
								}else{
									parent_id.setValue(combox_selID.replace(/folder_/i,''));
								}
								selNode = folder_tree.getRootNode();
							}

							if(selNode.id == 'folder_0' && (new_folder.getValue().trim() == '' || new_folder.getValue().trim() == 'Add a new folder...')){
								handleActionFailure('Please enter a name for your new folder.');
							}else if(bm_title.getValue().trim() == ''){
								handleActionFailure('Please enter a title for your bookmark.');
							}else if(bm_url.getValue().trim() == ''){
								handleActionFailure('Please enter a URL for your bookmark.');
							}else{
								validated = true;
							}

							if(validated){
									basic_form.getForm().submit({ 
										method:'POST' 
										,url:'/plugins/my_bookmarks/bookmark_popup.cfm'
										,success:function(theform,theaction){ 
	
											if(theaction.result.bm_exists){
												Ext.Msg.show({
													title: 'Bookmark Not Added',
													msg: 'You have already added this bookmark.',
													minWidth:250,
													buttons: Ext.MessageBox.OK
													,fn: function(btn){if(btn=='ok'){Ext.WindowMgr.getActive().destroy();}}												
												});														
											}else{
												
												Ext.Ajax.request({
													url:'/plugins/my_bookmarks/my_bookmarks_util.cfm'
													,method:'GET'
													,params:{action:'GETBOOKMARK',bm_id:theaction.result.bm_id}
													,success:function(responseObj,optionsObj){
														var tree = getActiveFileTree();	
														if(tree != null && tree.getXType() == 'treepanel'){
															var new_node = new Ext.tree.AsyncTreeNode(eval(responseObj.responseText)[0]);
															var parent_node = (parent_id.getValue() == '0' ? tree.getRootNode() : tree.getNodeById(parent_id.getValue()));
															if(parent_node.hasChildNodes() && parent_node.childNodes[theaction.result.bm_order] != undefined){
																parent_node.insertBefore(new_node,parent_node.childNodes[theaction.result.bm_order]);
															}else{
																parent_node.insertBefore(new_node);
															}

															if(!parent_node.expanded){
																parent_node.expand();
															}
															
															if(parent_node.id != tree.display_id){
//																parent_node.fireEvent('click',parent_node);
																// PRE-SHOW HACK! Although the new node has been inserted and the parent expanded, neither
																// event have finished at this point, so we need to delay the "click" event a bit
																// in order to display the contents of a newly created folder and bookmark.
																setTimeout('getSelectedFileTreeNode().fireEvent(\'click\',getSelectedFileTreeNode())',500);
															}
														}
													}
													,failure:function(responseObj,optionsObj){
													}
												});
												
												var bm_tab = getMyRSNATab('myBookmarks');
												if(bm_tab != null && Ext.value(bm_tab.rendered,false) && !bm_tab.hasListener('activate')){
													bm_tab.addListener('activate',refreshBookmarksTree);
												}
												
												Ext.Msg.show({
													title: 'Bookmark Added',
													msg: 'Your bookmark was successfully added.',
													minWidth:250,
													buttons: Ext.MessageBox.OK
													,fn: function(btn){
															if(btn=='ok'){
																Ext.WindowMgr.getActive().destroy();
															} // btn=='yes'
														}												
												});
											} // theaction.result.bm_exists
										} // success 
										,failure:function(form, action){handleActionFailure('Sorry, we were unable to add your bookmark.');} 
									}); 
								} // validated
							} // end Handler
						},{
							text:'Close'
							,handler:function(){
								Ext.WindowMgr.getActive().destroy();
							}
						}]						
				})	// Ext.FormPanel	
	var forms_array = new Array();
	forms_array.push(basic_form,bm_form);
	return forms_array;
}


function createBookmarkNode(node){
	//alert('Create ' + node.attributes.bm_height);
	var id = (node.isRoot ? node.id : node.attributes.bm_id);
	var node = new Ext.tree.AsyncTreeNode({
					id:id
					,text:node.attributes.text
					,bm_url:node.attributes.bm_url
					,bm_web:node.attributes.bm_web
					,mm_clientfile:node.attributes.text
					,mm_filesize:'N/A'
					,mt_name:node.attributes.node_type
					,mm_key:''
					,mm_height:node.attributes.bm_height
					,mm_width:node.attributes.bm_width
					,mm_duration:'N/A'
					,cq_converting:'N'
					,cq_converted:'N'
					,mm_thumbnail:'N'
					,thumbnail:''
					,restricted:(node.attributes.restricted != undefined && node.attributes.restricted == true ? true : false)
					,searchable:(node.attributes.searchable != undefined && node.attributes.searchable == true ? true : false)
					,thumbview:node.attributes.thumbview
					,iconCls:node.attributes.iconCls
					,leaf:node.leaf
					,success:'true'
				});	
	
	return node;
}


function bookmark_propform(tabpanel,node,winid,args){
	var treenode = createBookmarkNode(node);	
	var detail_row = imageviewer_detailrow(treenode);

	var hide_button = (node == null || node.attributes.restricted ? true : false);

	if(treenode.attributes.mt_name == 'URL'){
		var name_field = new Ext.form.TextField({
					id:'file_name'
					,fieldLabel:'Name'
					,name:'file_name'
					,value:treenode.attributes.mm_clientfile
					,readOnly:false
					,selectOnFocus:false
					,width:250
					,blankText:'Please enter a name for this bookmark.'
					,allowBlank:false
				});
	}else{
		var name_field = new Ext.form.MiscField({
					id:'file_name'+winid
					,fieldLabel: 'Name'
					,name: 'file_name'+winid
					,value: treenode.attributes.mm_clientfile
				});
	}

	var bm_url;
	if(treenode.attributes.mm_key != ''){
		bm_url = mediapath+'myfiledisplay.cfm?q=' + treenode.attributes.mm_key;	
	}else{
		bm_url = treenode.attributes.bm_url;
	}

	var prop_form = new Ext.FormPanel({
		id:'file_properties'+winid,
		labelWidth: 100, // label settings here cascade unless overridden
		bodyBorder:false,

		bodyStyle:'padding:5px 5px 0',
		formId:'file_properties_form'+winid,
		height:172,
		defaults: {labelStyle: 'font-size:12px; font-weight:bold; width:75px;',width:tabpanel.getInnerWidth() -160}
						
		,items: [new Ext.form.Hidden({id:'q',name:'q',value:node.id})  
			    ,new Ext.form.Hidden({id:'mm_key',name:'mm_key',value:treenode.attributes.mm_key})
				,new Ext.form.Hidden({id:'rt_type',name:'rt_type',value:'BM'})	
				,new Ext.form.Hidden({id:'ACTION',name:'ACTION',value:'UPDBOOKMARK'})	
				,name_field
				,detail_row		
				,new Ext.form.TextField({
					id:'bm_link'
					,fieldLabel:'Link'
					,name:'bm_link'
					,value:bm_url
					,readOnly:true
					,selectOnFocus:true
					,width:250
					,blankText:'Please enter a URL for this bookmark.'
					,allowBlank:false
				})
				
				,new Ext.form.TextField({
					fieldLabel:'Embed'
					,name:'embed'
					,id:'embed'+winid
					,value:args.embed
					,readOnly:true
					,selectOnFocus:true
				})
				
				,new Ext.form.TextArea({
					id:'file_descr'+winid
					,fieldLabel:'Description'
					,name:'file_descr'
					,height:20
				})
				
				
				,new Ext.Button({
					id:'save_descr'+winid
					,text: 'Update Bookmark'
					,hidden: hide_button
					,listeners:{'render':function(b){b.getEl().dom.align='center';}}
					,handler:function(){
						prop_form.getForm().submit({ 
							method:'POST' 
							,url:'/plugins/my_bookmarks/my_bookmarks_util.cfm'
							,success:function(theform,theaction){ 
								Ext.Msg.show({
										title: 'Success'
										,msg:'<div align="center">Your bookmark was successfully updated.</div>'
										,minWidth:250
										,buttons: Ext.MessageBox.OK
								});
								var thenode = getSelectedFileTreeNode();
								
								for(var i=0;i<theform.items.items.length;i++){
									if(theform.items.items[i].id == 'file_name'+winid){
										thenode.setText(theform.items.items[i].value);	
									}else if(theform.items.items[i].id == 'file_descr'+winid){
										thenode.attributes.bm_detail = theform.items.items[i].value;
									}
								}
							} //end success
						
							,failure:function(form, action){ 
									handleActionFailure('Failure!','Sorry, we were unable to save the description.');
								} // end failure
						}); // end submit							
					}// end button handler					
				})
			]
	});	
	
	return prop_form;
}

function handleBookmarkDataViewRender(component){
	var dragZone = new ImageDragZone(mb_fDataView, {containerScroll:true,
        ddGroup: 'mybookmarksDD'});
}

function handleBookmarkDataViewFileDblClick(div,i,node,e){
	var tree = getActiveFileTree();
	var treenode = tree.getNodeById(div.getRecord(div.getNode(i)).data.bm_id);
	handleFileClick('',treenode,true,true);
}





function handleBookmarkDataViewRightClick(DV,index,node,theevent){
	theevent.stopEvent();
	var tree = getActiveFileTree();
	var treenode = tree.getNodeById(DV.getSelectedRecords()[0].data.bm_id);
	handleBookmarkRightClick(treenode,theevent,'dataviewRightClick');
}


function handleBookmarkRightClick(theitem,theevent,thebutton,selTreeNode){
	selTreeNode = (selTreeNode == undefined || selTreeNode == null ? true : selTreeNode);
	
	var menu_items = new Array();
	var event_pos = theevent.getXY();
	
	//Menu folder when accessed from the OPTIONS button		
	if(thebutton != undefined){
		
		menu_items.push({
					 	id: 'delete_bookmark_opt_button'
						,text: 'Delete Bookmark'
						,iconCls:'iconDeleteFile'
						,handler: function(button,e){
								var selNodes = new Array();
								if(my_bookmarks.getSelectionModel().getSelectedNode().attributes.thumbview){
									var dViewNodes = mb_fDataView.getSelectedRecords();
								}else{
									var dViewNodes = mb_fDataGrid.getSelections();
								}
								
								for(var i=0; i<dViewNodes.length; i++){
									selNodes.push(my_bookmarks.getNodeById(dViewNodes[i].data.bm_id));
								}
								
								if(selNodes.length == 0){
									Ext.Msg.show({
										title: 'myBookmarks Options',
										msg: '<div align="center">You have not selected any items</div>',
										minWidth:250,
										buttons: Ext.MessageBox.OK											
									});
								}else{
									handleDelete(button,e);
								}
							}
						
					}
					
					,'-',{text:'Cancel',iconCls:'menu-CANCEL',handler: function(){this.destroy();}}
				);
		
		event_pos[0] = event_pos[0]-130;
		event_pos[1] = event_pos[1]+9;
	}else{
		
		if(selTreeNode){
			theitem.select();
		}

		if(theitem.attributes.node_type != 'FOLDER'){
			if(theitem.attributes.mm_key != ''){
				menu_items.push({text: 'Download File'
								,iconCls:'iconDownload'
								,handler: function(){
									// add code from myfiles to check for a video

										if(theitem.attributes.node_type != undefined && theitem.attributes.node_type == 'VIDEO')
											videoDownloadPopupWindow(theitem.attributes.mm_key);
										else
											document.location.href=mediapath + 'myfiles_download.cfm?q=' + theitem.attributes.mm_key;
//									document.location.href=mediapath + 'myfiles_download.cfm?q=' + theitem.attributes.mm_key;
								}
							}
							,'-'
						);		
			}

			menu_items.push({id:'delete_bookmark_context_button'
						 	,text: 'Delete'
							,iconCls:'iconDeleteFile'
							,listeners:{'click':handleDelete}
						}
					);

			if(!Ext.util.Format.undef(theitem.attributes.shared_copy)){
				menu_items.push('-'
						,{id:'rename_bookmark_context_button'
						 	,text: 'Rename'
							,icon:'/images/book_edit.png'
							,listeners:{'click':handleBookmarkRename}
						}
						,'-'
					);
			
				menu_items.push({id:'the_menu_copy',
							text:'Copy Bookmark',
							scope:this,
							icon:'/images/book_go.png'
							,listeners:{'click':handleAdd}
						}
						,'-'
				);
			
				menu_items.push({id:'share_bookmark_context_button'
						 	,text: 'Share Options'
							,iconCls:'iconGroupAdd'
//							,listeners:{'click':handleDelete}
							,handler: function(button,e){
								var tree = getActiveFileTree();
								var node = tree.getNodeById(theitem.attributes.id);

								shareFileOption(node);
							}
						}
					);
			}
	
			if(thebutton != undefined){
				event_pos[0] = event_pos[0]-110;
				event_pos[1] = event_pos[1]+9;
			}
			
		}else{
			var optionsdisabled = (theitem.attributes.root ? true : false);
			
			menu_items.push({text: 'New Folder'
								,id: 'the_menu_add_folder'
								,iconCls:'iconAddFolder'
								,handler: function(){handleBookmarkAddFileFolder(theitem);}
							});
		
			//We want to prevent the user from renaming or deleting the "root" folder.
			if(my_bookmarks.getRootNode().id != theitem.id){
				menu_items.unshift({text: 'Rename Folder'
									,iconCls:'iconEditFolder'
									,disabled:optionsdisabled
									,listeners:{'click':handleBookmarkRename}
								},
								
								{id:'delete_bookmark_folder_button'
									,text: 'Delete Folder'
									,iconCls:'iconDeleteFolder'
									,disabled:optionsdisabled
									,listeners:{'click':handleDelete}
	//								,handler: function(){handleDelete(theitem);}
								}
					);
		
			}
		}// end if FOLDER
	
	
		menu_items.push('-',{text: 'Add Bookmark'
							,id: 'the_menu_add_bookmark'
							,iconCls:'tree-BOOK_ADD'
							,handler: function(){
								bookmark_popup('URL','myBookmarks');
							}
						}
						
						,'-',{text:'Cancel',iconCls:'menu-CANCEL',handler: function(){this.destroy();}}
					 
			);
	}// end if thebutton != undefined
	
	menu = new Ext.menu.Menu({
					id: 'menuFile',
					minWidth:150,
					items: menu_items
					,bm_id:theitem.attributes.bm_id
					});
	
	menu.showAt(event_pos);

}// end handletree right click




function handleBookmarkAddFileFolder(theitem,theevent){
	var tree_rendered = false;

	var temp_media_id = 0;
	var temp_folder_name = 'Select a Parent Folder';

	if(theitem.attributes.bm_id != undefined){
		temp_media_id = theitem.attributes.bm_id;
	}else{
		temp_media_id = theitem.attributes.id;	
	}
	temp_folder_name = theitem.attributes.text;
	
	
	var txtFolderName = new Ext.form.TextField({
			id:'bm_folder_title'
			,fieldLabel:'Name'
			,disabled:false								
			,labelStyle: 'font-size:12px; font-weight:bold; width:75px;'
			,name:'bm_folder_title'			
			,value:'New Folder'
			,allowBlank:false
			,blankText:'Please enter a folder name...'
			,width:250
		});
	
	
       	var afcombox = new Ext.form.ComboBox({
			id:'afcombox',
			store:new Ext.data.SimpleStore({fields:[],data:[[]]}),
			fieldLabel: 'Location',
			labelStyle: 'font-size:12px; font-weight:bold; width:75px;',
			editable:false,
			emptyText:temp_folder_name,
			forceSelection:true,
			mode: 'local',
			triggerAction:'all',
			width:250,
			maxHeight: 200,
			tpl: '<tpl for="."><div style="height:200px"><div id="bm_aftree"></div></div></tpl>',
			selectedClass:'',
			onSelect:Ext.emptyFn
		})
	
	var bm_aftree = new Ext.tree.TreePanel({
			id:'bm_aftree',
			border:false,
			rootVisible:true,
			trackMouseOver:true,
			root: new Ext.tree.AsyncTreeNode({
				id: 'isroot'
				,text: 'myBookmarks'
				,draggable:false
				,lines:true
				,expanded:true
			})	
			
			,loader: new Ext.tree.TreeLoader({
				dataUrl:myRSNApath + 'plugins/my_bookmarks/tree_loader.cfm'
				,baseParams:{folder_only:'YES'}
				,clearOnLoad:true
				,listeners:{'load':handleBookmarkAddFolderTreeLoad}
			})		
		});	
	
	afcombox.on('expand',function(){
			if(! tree_rendered){				
			bm_aftree.render('bm_aftree');
			}
		});		
	
	bm_aftree.on('click',function(node){
		var sel_id = (node.id == 'isroot' ? 'isroot' : node.attributes.bm_id);
		bm_afform.findById('bm_id').setValue(sel_id);
		
		afcombox.setValue(node.text);
		afcombox.collapse();
	});	

		var bm_afform = new Ext.FormPanel({
						formId:'bm_afform',
						labelWidth: 75, // label settings here cascade unless overridden
						frame:true,
						autoWidth:true,
				
						items:[	
							   new Ext.form.Hidden({
								id:'bm_id',
								name:'bm_id',
								value:temp_media_id}),
							    afcombox,
							   txtFolderName
							  ]// end items for form
						
						,
						buttons: [{
						text: 'Add'
						,handler:function()
							{ 
								var allow_submit = true;
								//make sure a folder is selected
								if(bm_afform.findById('bm_id').getValue() == 0){
									allow_submit = false;
									Ext.Msg.show({
											title: 'Folder Needed'
											,msg:'<div align="center">Please Select a Parent Folder</div>'
											,minWidth:250
											,buttons: Ext.MessageBox.OK
									});
									
								} 
								
								if(allow_submit && bm_afform.findById('bm_folder_title').getValue() == ''){
									allow_submit = false;
									Ext.Msg.show({
											title: 'Folder Name'
											,msg:'<div align="center">Please enter a Folder name</div>'
											,minWidth:200
											,buttons: Ext.MessageBox.OK
									});
								}
								
								if(allow_submit){
									Ext.WindowMgr.get('bm_afw').hide();
									Ext.getBody().mask('Adding folder...','ext-el-mask-msg x-mask-loading');									
									
									bm_afform.getForm().submit({ 
								
									method:'POST' 
									,url:'/plugins/my_bookmarks/edit_item.cfm'
									,success:function(theform,theaction){ 
										Ext.Ajax.request({
											url:'/plugins/my_bookmarks/my_bookmarks_util.cfm'
											,method:'GET'
											,params:{action:'GETBOOKMARK',bm_id:theaction.result.bm_id}
											,success:function(responseObj,optionsObj){
												var tree = getActiveFileTree();																
												var new_node = new Ext.tree.AsyncTreeNode(eval(responseObj.responseText)[0]);
												var bm_id = bm_afform.findById('bm_id').getValue();
												var parent_node = (bm_id == 'isroot' ? tree.getRootNode() : tree.getNodeById(bm_id));
												if(parent_node.hasChildNodes() && parent_node.childNodes[theaction.result.bm_order] != undefined){
													var index = theaction.result.bm_order;
													if(parent_node.childNodes[theaction.result.bm_order].text == 'Shared Bookmarks')
														var index = index + 1;
													parent_node.insertBefore(new_node,parent_node.childNodes[index]);
												}else{
													parent_node.insertBefore(new_node);
												}
														
												if(!parent_node.expanded)
													parent_node.expand();
												if(parent_node.id == tree.display_id)
													parent_node.fireEvent('click',parent_node);
												
												Ext.getBody().unmask();
											}
											,failure:function(responseObj,optionsObj){
											}
										});
										
										Ext.Msg.show({
											title: 'Bookmark Added',
											msg: 'Your bookmark was successfully added.',
											minWidth:250,
											buttons: Ext.MessageBox.OK
											,fn: function(btn){
/*													if(btn=='ok'){
														Ext.WindowMgr.getActive().destroy();
													} // btn=='yes'*/
												}												
										});										
									}

									,failure:function(form, action){ 
											Ext.getBody().unmask();
											handleActionFailure('Sorry, we were unable to create your folder.');
										} // end failure
									}); // end submit
								}// end allow_submit
							}// end handler
						}
						,{text:'Cancel'
							,handler:function(){
								Ext.WindowMgr.get('bm_afw').close();
							}
						}
						]// end buttons
					});
				  
	var bm_afw = new Ext.Window(
		{
			id:'bm_afw',
			title:'Add a Folder',
			closable:false,
			width:375,
			autoHeight:true,
			autoScroll:true,
			iconCls:'iconAddFolder',
			shadow:false
			,items:[bm_afform		
			]  // bm_form_window.items
		}
	).show();	

}


function handleBookmarkAddFolderTreeLoad(thetree){
	var tree = Ext.getCmp('bm_aftree');
	tree.getRootNode().cascade(function(node){node.purgeListeners();});
	var selNode = my_bookmarks.getSelectionModel().getSelectedNode();
	if(selNode.isRoot){
		var targetnode = tree.getNodeById('isroot');	
	}else{
		var targetnode = tree.getNodeById('folder_'+ selNode.id);
		targetnode.ensureVisible();
	}
	targetnode.select();
}
		
		
function handleBookmarkAddFolderExpand(theitem,theevent){
 	tNode = editFilesTree.getNodeById('f' + theitem.id);
 	tNode.expand();
}













function create_my_bookmarks(search_term,selected_id){
	Ext.BLANK_IMAGE_URL = 'http:/'+'/www.rsna.org/images/s.gif';
	var fileswidth = 400;
	if(search_term == undefined){
		search_term = '';	
	}

	var bm_height =  'auto';
	if(myrsnatabs.getActiveTab().tab_type == 'LAYOUT'){
		bm_height = 281;
	}else{
		bm_height = myrsnatabs.getActiveTab().getInnerHeight()-10;
	}
	
	var hideTrigger1 = (search_term == '' ? true : false);
	
	var bm_tb = new Ext.Toolbar({
				autoWidth : true,
				items:[
					new Ext.app.SearchField({
						width:150
						,id: 'bm_search'
						,name:'bm_search'
						,value:search_term
						,hideTrigger1:hideTrigger1
					})
					
					,'->'
					
					  ,new Ext.BoxComponent({
							autoEl: {tag: 'div', cls: 'x-tool x-tool-refresh', id:'bm_treepanel_refresh'}
							 
							,listeners: {render:function(f){
								f.el.on('click', function(button, e) {
											refreshBookmarksTree(myrnatabs.getActiveTab());
									})
								,f.el.on('mouseover',function(button,e){this.dom.className = 'x-tool x-tool-refresh-over';})
								,f.el.on('mouseout',function(button,e){this.dom.className = 'x-tool x-tool-refresh';})
								}
							}
						}) 		
					
					  ,new Ext.BoxComponent({
							autoEl: {tag: 'div', cls: 'x-tool x-tool-left', id:'bm_treepanel_toggle'}
							 
							,listeners: {render:function(f){
								f.el.on('click', function(button, e) {
									var minimize = (button.target.className == 'x-tool x-tool-down-over');
									Ext.getCmp('mb_foldersList').collapse();
									})
								,f.el.on('mouseover',function(button,e){this.dom.className = 'x-tool x-tool-left-over';})
								,f.el.on('mouseout',function(button,e){this.dom.className = 'x-tool x-tool-left';})
								}
							}
						}) 
					  ,'&nbsp;'
					
//					,'&nbsp;&nbsp;&nbsp;Click to view your bookmark, right-click to edit.'  	   
					]
			});
	
	 mybookmarksContainer = new Ext.Container(
			{
			    id:' mybookmarksContainer',
			    applyTo:'my_bookmarks_div',
			    //autoHeight:true,
					//autoWidth:true,
					height:myrsnatabs.getInnerHeight() -5,
					width:myrsnatabs.getInnerWidth() - 5,
			    autoscroll:false,
			    layout:'border',
					
			    items:[
					 
                           	mb_viewfilespanel_container = new Ext.Panel({
                                		id:'mb_viewfilespanel_container',
                                		region: 'center',
                                		collapsible: false,
						  		border:false,
                                		autoScroll:false,
								split:true,
//								width:myrsnatabs.getInnerWidth()-5-fileswidth,
								minSize:myrsnatabs.getInnerWidth()-5-fileswidth,
								header:false
//								,layout:'fit'
								
								,items:[
										new Ext.Toolbar({
											id:'mb_viewfilespanel_tbar',
											autoWidth : true,
											cls:'x-panel-header',
											items:[				
												new Ext.Toolbar.TextItem({id:'mb_viewfilespanel_tbar_title',text:'<b>Welcome to myBookmarks</b>'})												
												]								
											})
											
											,viewfilespanel =  new Ext.Panel({
												id:'mb_viewfilespanel',
												collapsible: false,
												autoScroll:false,
												border:false,
												height:myrsnatabs.getInnerHeight()-20,
//												autoLoad:{url:'/myfiles/welcome.cfm',scripts:true, text:'Loading'},	
												header:false										
											})
										]
                            }),														
						
                            foldersList = new Ext.Panel({
                                	region:'west',
                                	id:'mb_foldersList',
						  	collapsible:true,
                                	split:true,
							margins:'0 0 5 5',
							cmargins:'5 5 0 0',								
							width: fileswidth,
							minSize: 250,
							maxSize: fileswidth,
							border:false,
							autoScroll:true
							,items:[
								    my_bookmarks = new Ext.tree.TreePanel({
										id:'my_bookmarks',
										listeners:{contextmenu:handleBookmarkRightClick,beforenodedrop:handleTreeDrop,nodeDrop:handleTreePostDrop,click:handleTreeNodeClick},
										autoWidth : true,
										animate:true,
										enableDD:true,
										ddGroup:'mybookmarksDD',
										containerScroll:true,		
										trackMouseOver:true,
										height:bm_height,
										autoScroll:true,
										donerendering:false,
										display_id:'',
										tbar:bm_tb,
		//											border:false,
										search_term:search_term,
		
										loader: new Ext.tree.TreeLoader({
											dataUrl:myRSNApath + 'plugins/my_bookmarks/tree_loader.cfm'
											,baseParams:{search_term:search_term}
											,clearOnLoad:true
											,listeners:{'load':handleBookmarksInitialTreeLoad}
									   })
		
									   ,root: new Ext.tree.AsyncTreeNode({text:'myBookmarks'
																  ,id:'isroot'
																  ,iconCls:'tree-FOLDER'
																  ,expanded:true
																  ,draggable:false
																  
																  ,bm_url:''
																  ,bm_web:'Y'
																  ,node_type:'FOLDER'
																  ,mt_name:'FOLDER'
																  ,bm_height:''
																  ,bm_width:''
																  ,mm_key:''
																  ,bm_detail:''
																  ,thumbview:true
																  ,listeners:{click:handleBookmarkLeftClick}
																  //,allowDrop:false
																  })		
								    })   
								]
                            	})
				    
				]
			});
	 
	if(selected_id != undefined && selected_id != ''){
		my_bookmarks.getNodeById(selected_id).select();		
	}
	
	my_bookmarks_editor = new Ext.tree.TreeEditor(my_bookmarks);
	my_bookmarks_editor.on('beforestartedit', handleBookmarksEditFileRights);
	my_bookmarks_editor.on('startedit', function(calling_el,val){handleEditFileName(getSelectedFileTreeNode(),this);});
	my_bookmarks_editor.on('complete', handleBookmarkTreeCommitFileName);

	 my_bookmarks.render();
	 mb_viewfilespanel_container.addListener('resize',resize_viewerpanel);
}


function handleBookmarksEditFileRights(editor,temp,value){
	var selNode = '';
	if(Ext.value(editor.tree,false)){
		selNode = getSelectedFileTreeNode();
	}else{
		var record = this.view.store.getAt(this.view.findItemFromChild(temp.dom.parentNode).viewIndex);
		var type = Ext.value(record.get('mt_name'),'IMAGE');
		var tree = getActiveFileTree();
		if(type == 'FOLDER'){
			// add code for folder thumbnails.	
		}else if(type == 'URL'){
			selNode = tree.getNodeById(record.get('bm_id'));
		}else{
//			selNode = tree.getNodeById(record.get('mm_key'));
			selNode = tree.getNodeById(record.get('bm_id'));
		}
	}
	
	if(Ext.util.Format.undef(selNode.attributes.shared_copy) || selNode.id == 'isroot' || selNode.attributes.text == 'Shared Bookmarks')
		return false;
	else
		return true;	
}


function handleBookmarksInitialTreeLoad(treeloader,node,response){
	myBookmarksLoad.hide(); 
	my_bookmarks.donerendering = true;

	var tree = getActiveFileTree();
	tree.addListener('click',handleBookmarkLeftClick);
	tree.addListener('dblclick',handleBookmarkdblClick);
	tree.addListener('expandnode',handleExpand);
	tree.addListener('collapsenode',handleCollapse);
	tree.addListener('movenode',handleMove);
	
	treeloader.un('load',handleBookmarksInitialTreeLoad);
	
	var target_node = tree.getNodeById(Ext.value(dest_bm_id,''));
	if(target_node == null)
		target_node = tree.getRootNode();

	target_node.select();
	target_node.fireEvent('click',target_node);
	tree.display_id = target_node.id;	
}


function refreshBookmarksTree(tabpanel){
	Ext.getBody().mask('Refreshing myBookmarks...','ext-el-mask-msg x-mask-loading');
	var tree = getActiveFileTree();
	var treeloader = tree.getLoader();
	var sn = tree.selModel.getSelectedNode();
	if(sn != undefined){treeloader.lastID= sn.id;}
	tree.getLoader().suspendEvents();
	tree.getLoader().load(tree.root,
							function(treeloader,node){
								node.expand(false,false);
								if(treeloader.lastID != undefined && treeloader.lastID != tree.root.id){
									tree.root.suspendEvents();
									newNode = tree.getNodeById(treeloader.lastID);
									if(newNode == undefined){newNode = tree.getRootNode();}
									newNode.select();	
									if(newNode.attributes.node_type == 'FOLDER')
										newNode.fireEvent('click',newNode);
									tree.root.resumeEvents();
								}
								tree.getLoader().removeListener('load');
								Ext.getBody().unmask();
							}
						);
	tabpanel.un('movenode',refreshBookmarksTree);
}


	function createChildIndent(thenode){
		var buf = [];
		var p = thenode;
		var i = 1;
		while(p){
			if(!p.isRoot || (p.isRoot && p.ownerTree.rootVisible)){
				if(i == 1){
					if(!p.isLast()) {
						buf.unshift('<img src="/ext2.0/resources/images/default/tree/elbow2.gif" class="x-tree-elbow" />');
					} else {
						buf.unshift('<img src="/ext2.0/resources/images/default/tree/elbow-end.gif" class="x-tree-elbow-end" />');
					}
				}else{
					buf.unshift('<img src="/ext2.0/resources/images/default/tree/elbow-line.gif" class="x-tree-elbow-line" />');
				}
			}
			p = p.parentNode;
			i = i + 1;
		}
		this.childIndent = buf.join("");
			
        return this.childIndent;
    }
	
	function handleMove(the_tree,the_node,old_parent,new_parent,new_index) {
		var shared_copy = (Ext.util.Format.undef(the_node.attributes.shared_copy) ? true : false);

		Ext.Ajax.request({
			url:'/plugins/my_bookmarks/move_bookmark.cfm'
			,method:'GET'
			,params:{action:'MOVE',bm_id:the_node.id,bm_order:new_index+1.5,parent_id:new_parent.id,shared_copy:shared_copy}
			,success:function(responseObj,optionsObj){
				}
			,failure:function(responseObj,optionsObj){
				}
		});
	}	

	function handleExpand(the_node){
		if(the_node.attributes.node_type == "FOLDER" && the_node.ownerTree.donerendering == true && !the_node.isRoot){
			Ext.Ajax.request({
				url:'/plugins/my_bookmarks/move_bookmark.cfm'
				,method:'GET'
				,params:{action:'EXPAND',bm_id:the_node.id}
				,success:function(responseObj,optionsObj){
					}
				,failure:function(responseObj,optionsObj){
					}
			});
		}	
	}		

	function handleCollapse(the_node){
		if(the_node.attributes.node_type == "FOLDER" && the_node.ownerTree.donerendering == true && !the_node.isRoot){
			Ext.Ajax.request({
				url:'/plugins/my_bookmarks/move_bookmark.cfm'
				,method:'GET'
				,params:{action:'COLLAPSE',bm_id:the_node.id}
				,success:function(responseObj,optionsObj){
					}
				,failure:function(responseObj,optionsObj){
					}
			});
		}
	}
	
	
	function handleBookmarkRename(theitem,e){
		var node = getSelectedFileTreeNode();
		my_bookmarks_editor.editNode = node;
		my_bookmarks_editor.startEdit(node.ui.textNode, node.text);
	}
	
	
	function handleBookmarkTreeCommitFileName(editor, cur_val, start_val){
		executeRenameBookmark(editor.editNode, cur_val, start_val);
	}
	
	
	function handleBookmarksDataViewCommitFileName(editor_el, val){
		var record = editor_el.activeRecord;
		var type = Ext.value(record.get('mt_name'),'IMAGE');
		var node = getActiveFileTree().getNodeById(record.get('bm_id'));
		executeRenameBookmark(node,val,editor_el.startValue);
	}
	
	
	function executeRenameBookmark(node, cur_val, start_val){

		if(cur_val.replace(/ /g, '') == '' || cur_val == start_val){
			node.setText(start_val);	
		}else{
			Ext.Ajax.request({
				url:'/plugins/my_bookmarks/my_bookmarks_util.cfm'
				,method:'POST'
				,params:{action:'RENAMEBOOKMARK',media_id:node.attributes.bm_id,new_name:cur_val}
				,success:function(responseObj,optionsObj){
						node.attributes.text = cur_val;
						node.setText(cur_val);
						handleBookmarkUpdRenameFile(node,cur_val);
					}
				,failure:function(responseObj,optionsObj){
						handleActionFailure('Sorry, we were unable to rename your '+(node.attributes.node_type == 'FOLDER'?'folder':'bookmark')+'.');
					}
			});			
		}
	}
	
	
	function handleBookmarkUpdRenameFile(node,file_name){
		var right_panel = Ext.getCmp('mb_viewfilespanel');
		if(right_panel != null){
			var thumb_panel = right_panel.findById('mybookmarksfolderview');
			var grid_panel = right_panel.findById('mybookmarksDetailview');
			if(thumb_panel != null){
				var right_panel_node = thumb_panel.store.getAt(thumb_panel.store.find('bm_id',node.attributes.bm_id));
			}else if(grid_panel != null){
				var right_panel_node = grid_panel.store.getAt(grid_panel.store.find('bm_id',node.attributes.bm_id));
			}
			
			if(right_panel_node != undefined){
				right_panel_node.set('mm_clientfile',file_name);
				right_panel_node.set('title',Ext.util.Format.ellipsis(file_name, 13));
				right_panel_node.commit();
			}
		}
		
		var upd_title = false;
		if(node.attributes.node_type == 'FOLDER' || node.attributes.node_type == 'URL'){
			if(my_bookmarks.display_id == node.attributes.bm_id){ upd_title = true; }
		}else{
			if(my_bookmarks.display_id == node.attributes.mm_key){ upd_title = true; }
		}

		if(upd_title){
			if(node.attributes.mm_key != ''){
				createTreeNode(node.attributes.mm_key,'handleBookmarkMFViewTitle');
			}else{
				var treenode = createBookmarkNode(node);
				handleFileClick('',treenode,false,false);
			}
		}
	}
	

	function handleAdd(theitem,theevent){
		var add_args = '';
		var bm_id = '';
		if(theitem.id == 'the_menu_copy'){
			add_args = '&type=COPY';
			bm_id = theitem.parentMenu.bm_id;
		}else if(theitem.id == 'the_menu_add_bookmark'){
			add_args = '&type=URL';
		}else if(theitem.id == 'the_menu_add_folder'){
			add_args = '&type=FOLDER';
		}

		var url = myRSNApath + "plugins/my_bookmarks/edit_item.cfm?action=ADD" + add_args;
		if(theitem.id != 'the_menu_copy' && my_bookmarks.selModel.selNode != null){
			bm_id = my_bookmarks.selModel.selNode.id;
		}
		
		if(bm_id != ''){
			url = url + '&bm_id=' + bm_id;	
		}
		
		Ext.Ajax.request({
			url:url
			,method:'GET'
			,success:function(responseObj,optionsObj){
				eval(responseObj.responseText.replace(/\r\n */g,""));
				var theloader = my_bookmarks.getLoader();
				theloader.load(my_bookmarks.getRootNode()
							,function(a){
								my_bookmarks.animate = false;
								my_bookmarks.getRootNode().expand();
								my_bookmarks.getNodeById(selected_bm).select();
								var selnode = my_bookmarks.getSelectionModel().getSelectedNode()
								selnode.fireEvent('click',selnode);
								my_bookmarks.animate = true;
								}
							);
				}
			,failure:function(responseObj,optionsObj){
				}
		});
		
	}
	
	function handleAddBookmark(){
		bookmark_popup('URL','myBookmarks','','');	
	}	
	
	function handleBookmark(thebutton,theevent){
		var type = 'ADD';
		var bm_id = '';
		if(thebutton.id == 'the_menu_edit'){
			type = 'UPDATE';
			bm_id = my_bookmarks.getNodeById(thebutton.parentMenu.selected_node).id;
		}

		var theform = editAddBookmark(type,bm_id);
		
		var bm_window = new Ext.Window(
			{
				id:'bm_window',
				title:'Add a Bookmark',
				width:375,
				autoHeight:true,
				autoScroll:true,
				iconCls:'tree-BOOK_ADD',
				shadow:false,
				items:[theform		
				]  // bm_form_window.items
			}
		).show();
	}
	
	function editAddBookmark(type,bm_id){
		var bm_descr = '';
		var bm_url = '';

		if(type != undefined && type == 'UPDATE' && bm_id != undefined){
			var selected_node = my_bookmarks.getNodeById(bm_id);
				bm_descr = selected_node.attributes.text;
				bm_url = selected_node.attributes.bm_url;
		}else{
			var bm_id = (my_bookmarks.selModel.selNode != null ? my_bookmarks.selModel.selNode.id : '0');
		}

		var bm_form = new Ext.FormPanel({
						formId:'add_bm_form',
						labelWidth: 75, // label settings here cascade unless overridden
						frame:true,
//						width: 350,
						autoWidth:true,
				
						items:[
							new Ext.form.Hidden({
							name:'action',
							value:type}),   
							new Ext.form.Hidden({
							name:'type',
							value:'URL'}),
							new Ext.form.Hidden({
							name:'bm_id',
							value:bm_id}), 							
							new Ext.form.TextArea({
							id:'bm_descr',
							fieldLabel:'Title',
							name:'bm_descr',
							value:bm_descr,
							allowBlank:false,
							blankText:'Please enter a title for this bookmark.',
							selectOnFocus:true,
							width:250}),
							new Ext.form.TextField({
							id:'bm_url',
							fieldLabel:'URL',
							name:'bm_url',
							value:bm_url,
							allowBlank:false,
							blankText:'Please enter a URL for this bookmark.',
							width:250})
						],
						
						buttons: [{
							text: type
							,handler:function(){ 
								 bm_form.getForm().submit({ 
										method:'GET' 
				 
							// URL to send your username / password variables to 
										,url:myRSNApath + 'plugins/my_bookmarks/edit_item.cfm'
				                        ,success:function(theform,theaction){ 
//											create_my_bookmarks('',theaction.result);										
											var theloader = my_bookmarks.getLoader();
											theloader.load(my_bookmarks.getRootNode()
														,function(a){
															my_bookmarks.animate = false;
															my_bookmarks.getRootNode().expand();
															my_bookmarks.getNodeById(theaction.result.bm_id).select();
															my_bookmarks.animate = true;
															}
														);											
											Ext.WindowMgr.getActive().destroy();
										}
										,failure:function(form, action){ 
//											Ext.Msg.alert('Failure!','Sorry, we were unable to add your bookmark.');
											Ext.Msg.show({
													title: 'Failure!'
													,msg:'<div align="center">Sorry, we were unable to add your bookmark.</div>'
													,minWidth:250
													,buttons: Ext.MessageBox.OK
											});
										} 
									}); 
								} 
							},{
								text:'Close'
								,handler:function(){
									Ext.WindowMgr.getActive().destroy();
//									document.getElementById('bm_window').style.visibility = 'hidden';
								}
							}]						
					})	// Ext.FormPanel	
		return bm_form;
	}
	
	function handleDelete(theitem,theevent){	
		theitem.parentMenu.hide();
		var selList = '';
		
		if(theitem.id == 'delete_bookmark_opt_button'){
			if(my_bookmarks.getSelectionModel().getSelectedNode().attributes.thumbview){
				var selNodes = mb_fDataView.getSelectedRecords();
			}else{
				var selNodes = mb_fDataGrid.getSelectionModel().getSelections();
			}
			var tree = getActiveFileTree();
			for(var i=0; i<selNodes.length; i++){
				if(i>0){selList = selList + ',';}
				var treenode = tree.getNodeById(selNodes[i].data.bm_id);
//				selList = selList + (Ext.util.Format.undef(treenode.attributes.shared_copy) ? 's' : '');
				selList = selList + treenode.attributes.bm_id;
			}

			var msgtext = 'Are you sure you want to delete the selected bookmark(s)?';
		}else{
			var selNodes = my_bookmarks.getNodeById(theitem.parentMenu.bm_id);
			selList = selList + selNodes.attributes.bm_id;
			
			if(selNodes.attributes.node_type == 'FOLDER'){
				var msgtext = "Are you sure you want to delete this folder? All contents of the folder will be deleted as well.";
			}else{
				var msgtext = "Are you sure you want to delete this bookmark?";	
			}
		}

		Ext.Msg.show({
			title: 'Confirm Delete',
			msg: msgtext,
			minWidth:250,
			buttons: Ext.MessageBox.YESNO
			,fn: function(btn){
					if(btn=='yes'){	
						Ext.Ajax.request({
							url:'/plugins/my_bookmarks/edit_item.cfm'
							,params:{action:'DELETE',bm_id:selList}
							,method:'GET'
							,success:function(responseObj,optionsObj){
								eval(responseObj.responseText);
								if(theitem.id == 'delete_bookmark_opt_button'){
									for(var j=0; j<selNodes.length; j++){
										my_bookmarks.getNodeById(selNodes[j].data.bm_id).remove();
									}
									my_bookmarks.getSelectionModel().getSelectedNode().fireEvent('click',my_bookmarks.getSelectionModel().getSelectedNode());
								}else{
									if(my_bookmarks.getSelectionModel().getSelectedNode().id == selNodes.attributes.id){
										selNodes.parentNode.select();
										selNodes.parentNode.fireEvent('click',selNodes.parentNode);
									}
									my_bookmarks.getNodeById(selNodes.attributes.id).remove();	
								}
							}
							,failure:function(responseObj,optionsObj){
							}
						});
					} // btn=='yes'
				}
		});
		return false;			
	}
	
	function handleRename(theitem,theevent){	
		theitem.parentMenu.hide();
		
		var selected_node = my_bookmarks.getNodeById(theitem.parentMenu.selected_node);
		if(selected_node.attributes.node_type == 'FOLDER'){
			var node_type = 'Folder';
		}else{
			var node_type = 'Bookmark';
		}

		Ext.Msg.show({
			title: 'Rename ' + node_type
			,msg: 'Rename your ' + node_type.toLowerCase() + ' in the field below and press "OK" to commit.'
			,minWidth:250
			,buttons: Ext.MessageBox.OKCANCEL
			,multiline:true
			,value:selected_node.attributes.text
			,fn: function(btn,text){
					if(btn=='ok'){
						text = text.replace(/&/g, "");	
						Ext.Ajax.request({
							url:'/plugins/my_bookmarks/edit_item.cfm'
							,params:{action:'UPDATE',bm_id:selected_node.attributes.id,bm_descr:escape(text)}
							,method:'GET'
							,success:function(responseObj,optionsObj){
								var theresponse = eval('['+responseObj.responseText+']');
								var theloader = my_bookmarks.getLoader();
								theloader.load(my_bookmarks.getRootNode()
											,function(a){
												my_bookmarks.animate = false;	
												my_bookmarks.getRootNode().expand();
												my_bookmarks.getNodeById(theresponse[0].bm_id).select();
												my_bookmarks.animate = true;
												}
											);								}
							,failure:function(responseObj,optionsObj){
							}
						});
					} // btn=='yes'
				}			
		});		
		return false;			
	}			
	
	function notAvailableAlert(){
//		Ext.Msg.alert('Notice', 'This presentation is not available online.');
		Ext.Msg.show({
				title: 'Notice'
				,msg:'<div align="center">This presentation is not available online.</div>'
				,minWidth:250
				,buttons: Ext.MessageBox.OK
		});
	}
	
	
	function handleBookmarkMFViewWindow(node){
		handleFileClick('',node,true,true);
	}
	
	function handleBookmarkMFView(node){
		handleFileClick('',node,true,false);	
	}
	
	function handleBookmarkMFViewTitle(node){
		handleFileClick('',node,false,false);	
	}
	

function handleBookmarkDataviewEditFileName(calling_el,val){
	if(Ext.isIE){
		var temp = this.view.store.getAt(this.view.findItemFromChild(calling_el).viewIndex);
		var attr = temp.data;
	}else{
		var attr = this.view.getSelectedRecords()[0].data;	
	}
	var type = Ext.value(attr.mt_name,'IMAGE');
	
	if(type == 'FOLDER'){
//		attr.id = attr.folder_id;
	}else if(type == 'URL'){
		attr.id = attr.bm_id;
	}else{
		attr.id = attr.mm_key;
	}
	
	var node = createMyFilesNode(attr);
	handleBookmarkEditFileName(node,this);
}

function handleBookmarkEditFileName(node,editor){
	if(node.attributes.mt_name != 'FOLDER'){
		var extension = '';
		var title_array = new Array();
		
		title_array = node.attributes.mm_clientfile.split(".");
		if(title_array.length > 1){
			extension = '.' + title_array[title_array.length-1];	
		}
		
		var file_title = '';
		if(title_array.length == 1){
			file_title = title_array[0];
		}else{
			for(var i=0; i<title_array.length-1; i++){
				if(i>0){file_title = file_title + '.';}
				file_title = file_title + title_array[i];	
			}
		}
		editor.setValue(file_title);
	}
}
