function handleFileClick(selModel,node,load_panel,new_window){
/***********************************************************************************************
This is the main function used to display a file and its properties.  
PARAMS:
selModel is just there because this function is used with the 'onclick' event in each treenode, 
		so selModel can be sent as a blank (''). 
node: needs to be an AsyncTreeNode with the attributes filled out (mm_clientfile, mm_filesize, ect)
load_panel: defaults to true.  if set to false, then just the toolbar will be redone.
new_window: defaults to false. if true, then the file info will open in an Ext.Window
***********************************************************************************************/
	load_panel = (load_panel == undefined || load_panel.toString() == '' ? true : load_panel);
	new_window = (new_window == undefined || new_window.toString() == '' ? false : new_window);
	var URL, tbar_title = '';

	if(node != null && node != undefined){
		var tree = (node.ownerTree == undefined ? getActiveFileTree() : node.ownerTree);
		var prefix = getActiveFileTreePrefix();
		var container = Ext.getCmp(prefix+'viewfilespanel_container');

		
		if(!new_window){ tree.display_id = node.id; }
		
		if(node.attributes.mt_name == 'FOLDER' || node.attributes.node_type == 'FOLDER'){

			if(prefix != 'mb_'){
				URL = '/myfiles/viewFolder.cfm?cf=' + node.attributes.cfolder_id + '&search_term=' + escape(Ext.value(getActiveFileTree().getLoader().search_term,''));
			}else{
				URL = '/plugins/my_bookmarks/viewFolder.cfm?cf=' + (node.id == 'isroot' ? '' : node.attributes.id);
			}
			
			tbar_title = new Ext.Toolbar.TextItem({id:prefix+'viewfilespanel_tbar_title', text:'<b>'+ node.attributes.text + '</b>'});

			if(node.attributes.thumbview == false){
				URL = URL + '&viewtype=DETAIL';
			}
			
			var buttons = new Array();
			buttons.push(new Ext.Toolbar.Button({iconCls:'tree-' + node.attributes.mt_name,handleMouseEvents:false})
						,tbar_title
			);
			
			var button_offset = 225;
			
			if(tree.id == 'editFilesTree'){
				buttons.push(new Ext.Toolbar.Button({
						id:prefix+'viewfilespanel_tbar_upload',
						text: 'Upload Files to Folder',
						hidden:false,
						listeners:{'click':function(button,e){handleBtnUpload(node);}},
//									listeners:{'click':handleFolderView,'arrowclick':handleFolderView},
						iconCls:'iconUpload'
						})	
					,'-');
				
				button_offset = button_offset + 150;
			}
			
			buttons.push(new Ext.Toolbar.MenuButton({
						id:prefix+'viewfilespanel_tbar_view',
						text: 'Folder View',
						hidden:false,
						listeners:{'click':handleFolderView,'arrowclick':handleFolderView},
						iconCls:'tree-VIEW'
						})	
					,'-'
					,new Ext.Toolbar.MenuButton({
						id:prefix+'viewfilespanel_tbar_options',
						text: 'Options',
						hidden:false,
						listeners:{'click':handleFileOption,'arrowclick':handleFileOption},
						iconCls:'tree-OPTIONS'
						})	
					,'&nbsp;&nbsp;');

			var new_tbar = new Ext.Toolbar({
							id:prefix+'viewfilespanel_tbar',
							autoWidth : true,
							cls:'x-panel-header',
							items:buttons								
							});
			
			container.remove(prefix+'viewfilespanel_tbar');
			container.insert(0,new_tbar);

			if(load_panel){
				container.remove(container.findById(prefix+'viewfilespanel'),true)	
			
				viewfilespanel =  new Ext.Panel({
								id:prefix+'viewfilespanel',
								collapsible: false,
								autoScroll:false,
								winid:winid,
								height:myrsnatabs.getInnerHeight()-20,
								autoWidth:true,
								header:false
								,autoLoad:{url:URL+'&width='+(container.getInnerWidth()-2), text:'loading', scripts:true}
							});
				container.add(viewfilespanel);
			}
			
			container.doLayout();	
			var tbar_title = new_tbar.items.items[1];
//			tbar_title.td.style.width='100%';
			tbar_title.td.style.width=(new_tbar.el.dom.clientWidth-button_offset).toString()+'px';
			tbar_title.td.innerHTML = '<div style="width:'+tbar_title.td.clientWidth.toString()+'px;height:15px;overflow:hidden;valign:top;">'+tbar_title.td.innerHTML+'</div>';
//			tbar_title.el.dom.parentNode.width = new_tbar.el.dom.clientWidth-330;

		}else{

			var randomnumber=Math.floor(Math.random()*10001);
			var winid = 'win' + randomnumber;
			displaynode = createMyFilesNode(node.attributes);
			tbar_title = Ext.util.Format.ellipsis(node.attributes.mm_clientfile,75,true);
			
			if(tree != null){
				if(tree.id == 'my_bookmarks' && Ext.value(node.attributes.mm_key,'') != ''){
					var root_node = tree.getRootNode();
					root_node.cascade(
							function(temp_node){
								if(Ext.value(temp_node.attributes.mm_key,'') != '' && temp_node.attributes.mm_key == node.attributes.mm_key){
									tbar_title = tree.getNodeById(temp_node.attributes.id).attributes.text;
									return false;
								}
							}
						);
				}
			}

			if(new_window){
			
				var browser_h = getHeight();	
				var browser_w = getWidth();	

				launchwin = new Ext.Window(
					{
						id:winid,
						autoDestroy:true,
						iconCls:'tree-'+node.attributes.mt_name,
						title:tbar_title,
						width:browser_w-50,
						height:browser_h-50,
						randnum:randomnumber
						,modal:true
						,mm_key:node.attributes.mm_key
						
						,items:[
								new Ext.Panel({
											id:prefix+'viewfilespanel'+winid,
											collapsible: false,
											autoScroll:true,
											winid:winid,
											height:browser_h-80,
											header:false	
										})							
								]
						,listeners:{'resize':handleViewerWindowResize}
					}
				).show();			

				var imageviewerpanel = Ext.WindowMgr.get(winid).findById(prefix+'viewfilespanel'+winid);
				load_imageviewer(imageviewerpanel,node,winid,new_window);
		
			}else{
				
				var current_viewer = Ext.getCmp(prefix+'fileviewpanel');
				var zoom_text = ((current_viewer == undefined || current_viewer.zoom == undefined || current_viewer.zoom == 100) ? '' : ' (' + current_viewer.zoom + '%)');
				var tbar_iconCls = 'tree-';
				if(node.attributes.shared_copy)
					{tbar_iconCls = tbar_iconCls + 'SHARED-';}
				else if(node.attributes.shared_file)
					{tbar_iconCls = tbar_iconCls + 'HOSTED-';}
				tbar_iconCls = tbar_iconCls + node.attributes.mt_name;

				var activetab = myrsnatabs.getActiveTab();
				
				var new_tbar = new Ext.Toolbar({
								id:prefix+'viewfilespanel_tbar',
								autoWidth : true,
								cls:'x-panel-header',
								items:[				
									new Ext.Toolbar.Button({id:prefix+'viewfilespanel_tbar_icon',iconCls:tbar_iconCls,handleMouseEvents:false})
									,'<b>Name:</b>&nbsp;&nbsp;' + tbar_title + zoom_text
									
									,new Ext.Toolbar.Button({
										id:prefix+'viewfilespanel_tbar_poc_cme',
										text: 'Point of Care CME',
										handler:handlePOCCMEWindow,
										hidden:(Ext.value(node.attributes.pubmed_id,0)==0?true:false),
										iconCls:'myRSNA-gold-star'
										})
									
									,new Ext.Toolbar.Button({
										id:prefix+'viewfilespanel_tbar_share_options',
										text: 'Share',
										hidden:Ext.value(node.attributes.restricted,false),
										listeners:{'click':function(button,e){shareFileOption(getSelectedFileTreeNode());}},
										iconCls:'iconGroupAdd'
										})
									
									,new Ext.Toolbar.MenuButton({
										id:prefix+'viewfilespanel_tbar_options',
										text: 'Options',
										hidden:(activetab.title == 'myBookmarks' || activetab.title == 'myFiles' ? false : true),
										listeners:{'arrowclick':handleFileOption,'click':handleFileOption},
										iconCls:'tree-OPTIONS'
										})	
									,'&nbsp;&nbsp;'
									]								
								});	

				container.remove(prefix+'viewfilespanel_tbar');
				container.insert(0,new_tbar);
				container.doLayout();	
				var tbar_title = new_tbar.items.items[1];
				tbar_title.td.style.width='100%';
				tbar_title.td.innerHTML = '<div style="width:'+tbar_title.td.clientWidth.toString()+'px;height:15px;overflow:hidden;valign:top;">'+tbar_title.td.innerHTML+'</div>';
				
				if(load_panel){
					container.remove(container.findById(prefix+'viewfilespanel'),true)	
					
					viewfilespanel =  new Ext.Panel({
									id:prefix+'viewfilespanel',
									collapsible: false,
									autoScroll:false,
									height:container.getInnerHeight()-34,
									winid:winid,
									header:false										
								});
					container.add(viewfilespanel);
					container.doLayout();
					load_imageviewer(viewfilespanel,node,winid,new_window);	
				}
			}
		} //node.attributes.mt_name == 'FOLDER'
	} //node != null && node != undefined
}


function load_imageviewer(imageviewerpanel,node,winid,new_window){
	var editFileContainer_items = new Array();
	if(winid == undefined){winid = '';}
		
	if(!Ext.value(new_window,false)){
		var tree = getActiveFileTree();

		editFileContainer_items.push(new Ext.Panel({
//									region:'south',
									collapsible: true,
									collapsed:false,
									id:'fileProperties'+winid,
									header:false,
									height: (Ext.isIE ? 27 : 25),
									autoScroll:false
									,items:[
									
										new Ext.ux.InlineToolbarTabPanel2({
												 toolbar: {items:[ 
													  new Ext.BoxComponent({
															autoEl: {tag: 'div', cls: 'x-tool x-tool-up', id:'filePropertiesToggle'+winid},
															 
														listeners: {render:function(f){
															f.el.on('click', function(button, e) {
																var minimize = (button.target.className == 'x-tool x-tool-down-over');
																
																toggle_properties_panel(minimize,winid);
															})
															,f.el.on('mouseover',function(button,e){
																this.dom.className = (button.target.className.substr(0,18) == 'x-tool x-tool-down' ? 'x-tool x-tool-down-over' : 'x-tool x-tool-up-over');})
															,f.el.on('mouseout',function(button,e){
																this.dom.className = (button.target.className.substr(0,18) == 'x-tool x-tool-down' ? 'x-tool x-tool-down' : 'x-tool x-tool-up');})
																	}
															 }
														  }) 
													  ,'&nbsp;&nbsp;&nbsp;'
												]},
											id:'file_properties_tabpanel'+winid,
										   	border:false,
//										   	activeTab:0,
										   	height:195,
										   	layoutOnTabChange:true,
										   	winid:winid,
										   	collapsible:true,
										   	collapsed: true,
										   	items:[{	id:'fileProperties_form'+winid
													,title:'Properties'
													,listeners: {activate: handlePropertiesTab}
												}
												,{	id:'fileProperties_terms'+winid
													,title:'Tags'
													,listeners: {activate: handleTermTab}
													,autoScroll:false}
												,{	id:'fileProperties_radlex'+winid
													,title:'Add Tags'
													,listeners: {activate: handleRadlexTab}
													,autoScroll:false}
												,{	id:'fileProperties_discu'+winid
													,title:'Discussion'
													,listeners: {activate: handleDiscussionTab}
													,autoScroll:false}
/*												,{	id:'fileProperties_poc_cme'+winid
													,title:'Point of Care CME'
													,listeners: {activate: handlePOCCMETab}
													,autoScroll:false}*/
													
										   ]									   
										   
									    })]

									})
							    );
	}
	
	var myfilesViewerToolbar = new Ext.Toolbar(
		{
			autoWidth : true,
			id: 'myfilesViewerToolbar'+winid,
			items:[
				{id:'zoom_in',winid:winid,encoded_mm_id:node.attributes.mm_key,iconCls:'viewer-ZOOM-IN',tooltip:'Zoom In',listeners:{'click':handleImageViewerButton}}
				,'&nbsp;'
				,{id:'zoom_out',winid:winid,encoded_mm_id:node.attributes.mm_key,iconCls:'viewer-ZOOM-OUT',tooltip:'Zoom Out',listeners:{'click':handleImageViewerButton}}
				,'&nbsp;'
				,'-'
				,'&nbsp;'
				,{id:'rotate_clock',winid:winid,encoded_mm_id:node.attributes.mm_key,iconCls:'viewer-ROTATE-CLOCKWISE',tooltip:'Rotate Clockwise',listeners:{'click':handleImageViewerButton}}
				,'&nbsp;'
				,{id:'rotate_counter',winid:winid,encoded_mm_id:node.attributes.mm_key,iconCls:'viewer-ROTATE-COUNTERCLOCKWISE',tooltip:'Rotate Counterclockwise',listeners:{'click':handleImageViewerButton}}
				,'&nbsp;'
				,'-'
				,'&nbsp;'
				,{id:'print_image',winid:winid,encoded_mm_id:node.attributes.mm_key,iconCls:'viewer-PRINT',tooltip:'Print this image',listeners:{'click':handleImageViewerButton}}
				,'&nbsp;'
				,{id:'expand_viewer',iconCls:'viewer-EXPAND',tooltip:'Expand this file to fullscreen',listeners:{'click':function(){handleFileClick('',displaynode,'',true);}}}
				,'&nbsp;'
				,'-'
				,'&nbsp;'
				,{id:'viewer_toolbar_bookmark',winid:winid,encoded_mm_id:node.attributes.mm_key,iconCls:'tree-BOOK_ADD',tooltip:'Bookmark this asset.',handler:handleViewerBookmarkButton}
				,'&nbsp;'
				,{id:'poc_cme',winid:winid,encoded_mm_id:node.attributes.mm_key,iconCls:'myRSNA-gold-star',tooltip:'Point of Care CME',handler:handlePOCCMEWindow}
			]
		}
	 );	
	
	var panel_height = (new_window ? imageviewerpanel.getInnerHeight() : imageviewerpanel.getInnerHeight()-35);

	if(Ext.value(node.attributes.mm_key,'') != ''){
		
		//We're using an iframepanel here instead of a normal panel so we can print the contents easily.
		editFileContainer_items.unshift({
									id:'fileviewpanel'+winid
//									,region: 'center'
									,collapsible: false
									,height:panel_height +6
									,autoWidth:true
									,autoScroll:true
									,bbar:myfilesViewerToolbar
									,zoom:100
									,rotate:0
									,xtype:'iframepanel'
									}
								);
	}else{

		if(node.attributes.bm_web != 'Y'){
//			Ext.Msg.alert('Notice', 'This bookmark is not available online.');
			var msg = '';
			if(Ext.value(node.attributes.mt_name,'URL').substr(0,7) == 'DPS2009'){
				msg = 'This bookmark is currently only available at RSNA 2009.';
			}else{
				msg = 'This bookmark is not available online.';
			}
			Ext.Msg.show({
					title: 'Notice'
					,msg:'<div align="center">'+msg+'</div>'
					,minWidth:250
					,buttons: Ext.MessageBox.OK
			});

			var temppanel = new Ext.Panel({id:'fileviewpanel'+winid
//									,region: 'center'
									,collapsible: false
									,height:panel_height
									,autoScroll: true
									,html:'<b>'+msg+'</b>'
									});
		}else{
			var temppanel = new Ext.ux.ManagedIframePanel({
										id:'fileviewpanel'+winid
//										,region: 'center'
										,cls:'x-window-body'
										,width:'100%'
										,height:panel_height
										,bbar:myfilesViewerToolbar
//										,defaultSrc:URL
										,loadMask:'Loading...'
										});

			if((node.attributes.bm_url.search('radiographics.rsna') >= 0 || node.attributes.bm_url.search('radiology.rsna') >= 0 || 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); 
				Ext.Ajax.request({
						url:'/myfiles/update_customer_file.cfm'
						,method:'POST'
						,params:{action:'GETHWTOKEN'}
						,success:function(responseObj,optionsObj){
								var json = eval(responseObj.responseText)[0];
								var h = getHeight()-50;
								var w = getWidth()-50;
								var URL = 'http://publications.rsna.org/cgi/externalLogin?url='+escape(node.attributes.bm_url)+'&key='+Ext.value(json.hwtoken,'')+'&memno='+Ext.value(json.memno,'');
								temppanel.defaultSrc = URL;

								if(temppanel.rendered){
									temppanel.setSrc();
								}
							}
					});	
				
			}else{
				var URL = node.attributes.bm_url;
				temppanel.defaultSrc = URL;
			}
		}
		editFileContainer_items.unshift(temppanel);
	}


	var el = imageviewerpanel.getEl();
	el.dom.removeChild(el.dom.firstChild);
	var editFileContainer = new Ext.Container(
			{
				id:'editFileContainer'+winid,
				applyTo:imageviewerpanel.id,
				height:imageviewerpanel.getInnerHeight(),
				autoWidth:true,
				autoscroll:false,
				node_id: node.attributes.mm_key,
				items:editFileContainer_items
			}
		 );

	var tabpanel = Ext.getCmp('file_properties_tabpanel'+winid);
	if(node.attributes.restricted && Ext.getCmp('fileProperties_radlex'+winid) != null){Ext.getCmp('fileProperties_radlex'+winid).disable();}
	
	//Show and hide tabs in the properties panel.
	if(tabpanel != undefined){
		if(Ext.value(node.attributes.pubmed_id,0) != 0){
			tabpanel.hideTabStripItem('fileProperties_discu'+winid);
			tabpanel.hideTabStripItem('fileProperties_radlex'+winid);
			tabpanel.hideTabStripItem('fileProperties_terms'+winid);
		}
	}
	var bbar =  Ext.getCmp('fileviewpanel'+winid).getBottomToolbar();
	if(bbar != undefined){
		bbar.getEl().child("table").wrap({tag:'center'});
	}
	
	var bbuttons = myfilesViewerToolbar.items;
	var mt_name = Ext.value(node.attributes.mt_name,'URL');

	for(var i=0; i<myfilesViewerToolbar.items.length; i++){
		if(mt_name != 'IMAGE' && (bbuttons.items[i].id == 'zoom_in' || bbuttons.items[i].id == 'zoom_out' 
										|| bbuttons.items[i].id == 'rotate_clock' || bbuttons.items[i].id == 'rotate_counter')){
			bbuttons.items[i].disable();
		}
		
		if((mt_name == 'AUDIO' || mt_name == 'FLASH' || mt_name == 'VIDEO' || mt_name == 'URL') && bbuttons.items[i].id == 'print_image'){
			bbuttons.items[i].disable();	
		}
		
		if(bbuttons.items[i].id == 'poc_cme' && (mt_name != 'URL' || Ext.value(node.attributes.pubmed_id,0) == 0)){
			bbuttons.items[i].disable();
		}
		
		if(bbuttons.items[i].id == 'expand_viewer' && Ext.value(new_window,false)){
			bbuttons.items[i].disable();
		}
	}

	if(Ext.value(node.attributes.mm_key,'') != ''){
		load_imageviewer_panel(node,editFileContainer.findById('fileviewpanel'+ winid));
	}
}


function toggle_properties_panel(minimize,winid){
	var view_panel = Ext.getCmp('fileviewpanel'+winid);
	var treenode = getSelectedFileTreeNode();

	var toggle_button = document.getElementById('filePropertiesToggle'+winid);
	toggle_button.className = (minimize ? 'x-tool x-tool-up' : 'x-tool x-tool-down');
	view_panel.setHeight(view_panel.height-(minimize ? 0 : 205));

	if(Ext.value(treenode.attributes.mm_key,'') != ''){
		getActiveFileTree().winid = winid;
		createTreeNode(treenode.attributes.mm_key,'reloadMediaPanel',treenode.attributes.node_type);
	}else{
		var display_node = createBookmarkNode(treenode);
		if(Ext.value(display_node.attributes.mm_key,'') != '')
			load_imageviewer_panel(display_node,view_panel);
		//I had the option of reloading the iFrame panel, but since we can't keep track of where the user
		//has been, it would have to be the first URL they used, so they'd lose any surfing they'd done.
		//So because of that, decided to not reload the window and maintain the current state of the frame.			
	}
	Ext.getCmp('fileProperties'+winid).setHeight((minimize ? (Ext.isIE ? 27 : 25) : 230));
		
	var tabpanel = Ext.getCmp('file_properties_tabpanel'+winid);
	
	if(minimize)
		tabpanel.collapse(false);
	else
		tabpanel.expand(false);

	if(tabpanel.getActiveTab() == null)
		tabpanel.setActiveTab('fileProperties_form'+winid);	
}


function resize_imageviewer(container,aW,aH,rW,rH){
	if(rW != undefined && rH != undefined){
		var treenode = getSelectedFileTreeNode();

		if(treenode != null && treenode.attributes.mt_name != 'FOLDER'){
	/*		var view_panel = Ext.getCmp('fileviewpanel'+winid);
	
			if(treenode.attributes.mm_key != ''){
				getActiveFileTree().winid = winid;
				createTreeNode(treenode.attributes.mm_key,'reloadMediaPanel',treenode.attributes.node_type);
			}else{
				var display_node = createBookmarkNode(treenode);
				load_imageviewer_panel(display_node,view_panel);
			}*/
		}
	}
}


function resize_viewerpanel(panel,aW,aH,rW,rH){
	var treepanel = getActiveFileTree();
	var treenode = getSelectedFileTreeNode();
	
	if(treenode != null){
		if(getActiveFileTree().id != 'my_bookmarks'){
			treepanel.getSelectionModel().fireEvent('selectionchange','',treenode);	
		}else{
			treenode.fireEvent('click',treenode);
		}
	}
}




function load_imageviewer_panel(node,fileviewpanel){
/* The callback function doesn't register when loading Flash into the panel, so had to 
	add the unmask function to the end of the viewFile.cfm page.*/
	Ext.getBody().mask('Loading...','ext-el-mask-msg x-mask-loading');

	fileviewpanel.load({  
			url:'/myfiles/viewFile.cfm'
			,params:{	q:node.attributes.mm_key
					,t:'WEB'
					,h:fileviewpanel.getInnerHeight()-(Ext.isIE ? 40 : 20)
					,w:fileviewpanel.getInnerWidth()-(Ext.isIE ? 30 : 20)
					,rotate:fileviewpanel.rotate
					,zoom:fileviewpanel.zoom
					,text:'Loading...'
					}
			,scripts:true
			,text:'Loading'
//			,callback:function(){Ext.getBody().unmask();}
		});	
}


function imageviewer_detailrow(node){
		if(!Ext.isEmpty(node.attributes.mm_duration)){
			var detail_row = ({layout:'column',
		  				border:false,
						autoWidth:true,
            				items:[{
		  					border:false,
							columnWidth:.5,
							layout: 'form',
							items: [
									new Ext.form.MiscField({
									fieldLabel: 'Size'
									,name: 'file_size'
									,value: Ext.value(node.attributes.mm_filesize,'')
									,labelStyle: 'font-size:12px; font-weight:bold; width:75px;'
								})							
							]
            				}
						,{
		  					border:false,
							columnWidth:.5,
							layout: 'form',
							items: [new Ext.form.MiscField({
									fieldLabel: 'Duration'
									,name: 'file_duration'
									,value: node.attributes.mm_duration
									,labelStyle: 'font-size:12px; font-weight:bold; width:75px;'
									})
							]
            				}]				
					});	
		
		}else if(!Ext.isEmpty(node.attributes.mm_height) && !Ext.isEmpty(node.attributes.mm_width)){
			var detail_row = ({layout:'column',
		  				border:false,
						autoWidth:true,
            				items:[{
		  					border:false,
							columnWidth:.33,
							layout: 'form',
							items: [new Ext.form.MiscField({
									fieldLabel: 'Size'
									,name: 'file_size'
									,value: Ext.value(node.attributes.mm_filesize,'')
									,labelStyle: 'font-size:12px; font-weight:bold; width:75px;'
									})
								]
            				}
						,{
		  					border:false,
							columnWidth:.33,
							layout: 'form',
							items: [new Ext.form.MiscField({
									fieldLabel: 'Height'
									,name: 'file_height'
									,value: node.attributes.mm_height + ' px'
									,labelStyle: 'font-size:12px; font-weight:bold;vertical-align:top;'
									,overCls:'font-weight:bold;'
									})
								]
            				}
						,{
		  					border:false,
							columnWidth:.33,
							layout: 'form',
							items: [new Ext.form.MiscField({
									fieldLabel: 'Width'
									,name: 'file_width'
									,value: node.attributes.mm_width + ' px'
									,labelStyle: 'font-size:12px; font-weight:bold; width:75px;'
									})
								]
            				}						
						]				
					});			
		}else{
			var detail_row = new Ext.form.MiscField({
							fieldLabel: 'Size'
							,name: 'file_size'
							,value: Ext.value(node.attributes.mm_filesize,'')
							,labelStyle: 'font-size:12px; font-weight:bold; width:75px;'
						});			
		}
		
		return detail_row;
}


function imageviewer_propform(tabpanel,node,winid,args){

	var detail_row = imageviewer_detailrow(node);
	var hide_button = (node == null || node.attributes.restricted ? true : false);
	
	var prop_form = new Ext.FormPanel({
		id:'file_properties'+winid,
		labelWidth: 100,
		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.attributes.mm_key})  
				,new Ext.form.Hidden({id:'media_type',name:'media_type',value:'CF'})	
				,new Ext.form.Hidden({id:'action',name:'action',value:'SAVEDESCR'})	
				,new Ext.form.MiscField({fieldLabel: 'Name',name:'file_name',value: node.attributes.mm_clientfile})
				,detail_row		
				,new Ext.form.TextField({
					fieldLabel:'Link'
					,name:'link'
					,id:'link'
					,value:mediapath+'myfiledisplay.cfm?q=' + node.attributes.mm_key
					,readOnly:true
					,selectOnFocus:true
				})
				
				,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'
					,value:args.file_descr
					,height:20
				})	
				
				,new Ext.Button({
					id:'save_descr'+winid
					,text: 'Save Description'
					,hidden: hide_button
					,listeners:{'render':function(b){b.getEl().dom.align='center';}}
					,handler:function()
						{
							prop_form.getForm().submit({ 								
								method:'POST' 
								,url:'/myfiles/update_customer_file.cfm'
								,success:function(theform,theaction){ 
										Ext.Msg.show({
												title: 'Success'
												,msg:'<div align="center">The description has been successfully saved.</div>'
												,minWidth:250
												,buttons: Ext.MessageBox.OK
										});
									} //end success
							
								,failure:function(form, action){ 
										handleActionFailure('Failure!','Sorry, we were unable to save the description.');
									} // end failure
							}); // end submit							
						}// end button handler						
				})
			]
	});	//end prop_form
	
	if(hide_button){
		var owner_name_field = new Ext.form.MiscField({
					fieldLabel: 'Owned By'
					,name: 'owner_name'+winid
					,id: 'owner_name'+winid
					,value: args.customer_name
				});
		prop_form.insert(4, owner_name_field);	
	}

	return prop_form;
}


function pubmed_propform(tabpanel,node,winid,args){
//	var bm_url = 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils/elink.fcgi?dbfrom=pubmed&id='+node.attributes.pubmed_id+'&retmode=ref&cmd=prlinks';
	var bm_url = node.attributes.url;
	args.embed = '<a href="' + args.url + '">' + args.article_title + '</a>';
	var authors = ''
	if(args.authors != undefined && args.authors.length > 0){
		for(var i=0; i<args.authors.length; i++){
			authors = authors + (i>0?', ':'') + args.authors[i].first_name + ' ' + args.authors[i].last_name;
		}
	}

	var prop_form = new Ext.FormPanel({
		id:'file_properties'+winid,
		labelWidth: 100,
		bodyBorder:false,
		bodyStyle:'padding:5px 5px 0',
		formId:'file_properties_form'+winid,
		height:200,
		autoScroll:true,
		defaults: {labelStyle: 'font-size:12px; font-weight:bold; width:75px;',width:tabpanel.getInnerWidth() -160}
	
		,items: [	{id:'file_name'
				,xtype:'textfield'
				,fieldLabel:'Name'
				,name:'file_name'
				,value:args.article_title}
				
				,{id:'authors'+winid
				,xtype:'textfield'
				,fieldLabel:'Authors'
				,name:'authors'
				,value:authors}
				
				,{id:'bm_link'
				,xtype:'textfield'
				,fieldLabel:'Link'
				,name:'bm_link'
				,value:bm_url
				,readOnly:true
				,selectOnFocus:true
				,blankText:'Please enter a URL for this bookmark.'
				,allowBlank:false}
				
				,{fieldLabel:'Embed'
				,name:'embed'
				,id:'embed'+winid
				,xtype:'textfield'
				,value:args.embed
				,readOnly:true
				,selectOnFocus:true}
				
				,{id:'abstract'+winid
				,xtype:'textarea'
				,fieldLabel:'Abstract'
				,name:'abstract'
				,value:Ext.value(args.abstract,'')
				,height:75}
			]
	});	
	
	return prop_form;
}



function handleImageViewerButton(button,theevent){
	var fileviewpanel =  Ext.getCmp('fileviewpanel'+button.winid);	
	var thewindow = Ext.WindowMgr.get(button.winid);
	var h = fileviewpanel.getInnerHeight();
	var w = fileviewpanel.getInnerWidth();
	var zoom = false;
	var update_viewer = false;

	var bbar = fileviewpanel.getBottomToolbar();
	for(var i=0; i<bbar.items.length; i++){
		if(bbar.items.items[i].id == 'zoom_in') { var zoom_in_button = bbar.items.items[i]; }	
		else if(bbar.items.items[i].id == 'zoom_out') { var zoom_out_button = bbar.items.items[i]; }	
	}	

	if(button.id == 'rotate_clock'){
		fileviewpanel.rotate = fileviewpanel.rotate + 90;
		udpate_viewer = true;
	}else if(button.id == 'rotate_counter'){
		fileviewpanel.rotate = fileviewpanel.rotate - 90;
		update_viewer = true;
	}else if(button.id == 'zoom_in'){
		zoom = true;
		update_viewer = true;
		
		if(fileviewpanel.zoom < 25) 		{ fileviewpanel.zoom = 25; }
		else if(fileviewpanel.zoom < 50) 	{ fileviewpanel.zoom = 50; }
		else if(fileviewpanel.zoom < 100) 	{ fileviewpanel.zoom = 100; }
		else if(fileviewpanel.zoom < 200) 	{ fileviewpanel.zoom = 200; }
		else 						{ fileviewpanel.zoom = 300; }
		
	}else if(button.id == 'zoom_out'){
		zoom = true;
		update_viewer = true;
		
		if(fileviewpanel.zoom > 300) 		{ fileviewpanel.zoom = 300; }
		else if(fileviewpanel.zoom > 200) 	{ fileviewpanel.zoom = 200; }
		else if(fileviewpanel.zoom > 100) 	{ fileviewpanel.zoom = 100; }
		else if(fileviewpanel.zoom > 50) 	{ fileviewpanel.zoom = 50; }
		else							{ fileviewpanel.zoom = 25; }
	}else if(button.id == 'print_image'){
		fileviewpanel.iframe.print();
	}

	if(zoom){
		if(fileviewpanel.zoom == 300) { zoom_in_button.disable(); }
		else if(fileviewpanel.zoom == 25) { zoom_out_button.disable(); }
		else { 	zoom_in_button.enable();
				zoom_out_button.enable();
			}
		
		if(Ext.value(button.winid,'') != '' && Ext.value(thewindow,'') != ''){
			var temp_title = thewindow.initialConfig.title + (fileviewpanel.zoom == 100 ? '' : ' (' + fileviewpanel.zoom + '%)');
			thewindow.setTitle(temp_title);
		}
	}

	if(update_viewer){
		load_imageviewer_panel(displaynode,fileviewpanel);
	}

}

function handleResizeRotateMask(a,b,c,d){
	a.ownerCt.el.unmask();
}


function handleViewerWindowResize(thewindow,w,h){
	var fileviewpanel = Ext.getCmp('fileviewpanel'+thewindow.id);

	if(fileviewpanel != undefined && thewindow.mm_key != ''){
		Ext.getBody().mask('Resizing image...','ext-el-mask-msg x-mask-loading');
		fileviewpanel.setSize({width:thewindow.getInnerWidth(),height:thewindow.getInnerHeight()});
		fileviewpanel.load({
				url:'/myfiles/viewFile.cfm'
				,params:{	q:thewindow.mm_key
						,t:'WEB'
						,h:thewindow.getInnerHeight()-35
						,w:thewindow.getInnerWidth()-10
						,rotate:fileviewpanel.rotate
						,zoom:fileviewpanel.zoom}
				,callback: function(){Ext.getBody().unmask();}
				,scripts:true
				,text:'Loading'
			});		
	}
}


function handlePropertiesTab(tabpanel){
	var prop_form, url, params = '';
	var tree = getActiveFileTree();
	var node = getSelectedFileTreeNode();
	var winid = tabpanel.ownerCt.winid;
	if(Ext.value(node.attributes.pubmed_id,0) == 0){	
		url = '/myfiles/update_customer_file.cfm';
		params = {action:'GETDETAILS',encoded_mm_id:node.attributes.mm_key,media_id:node.id};
	}else{
		url = '/yottalook/pubmed_util.cfm';
		params = {action:'GETRESULTSJSON',detailed:true,id:node.attributes.pubmed_id};
	}
	
	//This is where we get any additional data about the selected node that isn't stored in the tree-node
	Ext.Ajax.request({
			url:url
			,method:'POST'
			,params:params
			,success:function(responseObj,optionsObj){
					toggle_properties_panel(false,winid);
					var JSON = Ext.decode(responseObj.responseText);
					if(Ext.value(node.attributes.pubmed_id,0) !=  0){
						prop_form = pubmed_propform(tabpanel,node,winid,JSON);
					}else if(Ext.value(node.attributes.mm_key,'') == ''){
						prop_form = bookmark_propform(tabpanel,node,winid,JSON);	 
					}else{
						if(tree.id == 'my_bookmarks' || tree.id == 'mSmBGrid'){node = createBookmarkNode(node);}
						prop_form = imageviewer_propform(tabpanel,node,winid,JSON);
					}

					tabpanel.add(prop_form);
					tabpanel.doLayout();
				}	//end success
		});	// end AJAX request
}


function handleRadlexTab(tabpanel,winid){
	if(winid==undefined){winid=tabpanel.ownerCt.winid;}
	var radlexID = 'RID1';
	if(tabpanel.ownerCt.collapsed){toggle_properties_panel(false,winid);}
	
	var tag_store = new Ext.data.JsonStore({
						id:'custom_tag_store'+winid
						,url:'/myfiles/update_customer_file.cfm'
						,baseParams:{action:'GETMEDIATAGS',media_id:'',media_type:'',allTags:true,distinctTags:true,excludeShared:true}
						,fields:['ct_id','media_id','radlex_id','media_type','tag']
					});
	tag_store.load();
	tag_store.sort('tag');

    	var radlexpanel = new Ext.Panel({
		id:'fileProperties_radlex_panel'+winid
		,height:203
		,layout:'border'
		,border:false
		,items: [
			{
				xtype: 'treepanel'
				,id: 'radlex_browser'+winid
				,tbar:new Ext.Toolbar({autoWidth:true,cls:'x-panel-header',items:['<b>RadLex Browser</b>']})
				,region:'west'
				,border:true
				,height:150
				,width:'40%'
				,autoScroll: true
				,rootVisible: false
				,root: new Ext.tree.AsyncTreeNode({id:'RID1'})
				,loader: new Ext.tree.RadlexTreeLoader({
						dataUrl:myRSNApath + 'myfiles/myfiles.json.radlex.cfm'
						,baseParams:{ACTION:'GETCHILDREN',treeformat:true,q:''}
						,requestMethod:'POST'
//						,listeners:{'beforeload':function(a,b,c,d){debugger;}}
			   	})
				,listeners:{'click':function(node,e){
						if(!node.expanded){
							node.ui.ecClick(e);}}}
			}
			
			,{
				xtype:'panel'
				,id:'term_viewer'+winid
				,tbar:new Ext.Toolbar({autoWidth:true,cls:'x-panel-header',items:['<b>Term Viewer</b>']})
				,region:'center'
				,bodyStyle:'padding-left:5px; padding-top:5px;'
//				,height:173
				,height:150
				,width:'60%'
				,autoScroll:true
				,html:'<div align="center" style="width:100%;"><div align="center" style="width:90%;"><br><br><b>Use the Radlex Browser and search feature to navigate terms you can use to tag this asset.  Click on a Radlex term to view more information.</b></div></div>'
			}
		]
	});

	var radlexTplMarkup = getRadlexViewerTplMarkup(winid);

	var radlexTpl = new Ext.XTemplate(radlexTplMarkup);	
	var radtree = Ext.getCmp('radlex_browser'+winid);
	
	radtree.getSelectionModel().on('selectionchange',function(selModel,node){
			if(node != null){
				Ext.Ajax.request({
					url:'/myfiles/myfiles.json.radlex.cfm'
//					url:'/myfiles/myfiles.xml.radlex.cfm'
					,method:'POST'
					,params:{action:'GETTERM',radlexID:node.attributes.radlexID}
					,success:function(responseObj,optionsObj){
							var JSON = Ext.decode(responseObj.responseText);
							var tpl_args = {radlexID:JSON.attributes.id};
							tpl_args.winid = winid;
							Ext.each(JSON.children,function(child,index,a){
									if(child.children.length == 0){
										tpl_args[child.tag] = Ext.util.Format.capitalize(child.text);
									}else{
										tpl_args[child.tag] = child.children;
									}
								});
							
							var term_viewer = Ext.getCmp('term_viewer'+winid);
							radlexTpl.overwrite(term_viewer.body, tpl_args);
							var old_button = Ext.getCmp('apply_term'+winid);

							if(old_button != undefined)
								old_button.destroy();
							var apply_button = new Ext.Button({id:'apply_term'+winid
													,text:'Apply RadLex Tag'
													,iconCls:'viewer-ADD-TERM'
													,radlexID:JSON.attributes.id
													,renderTo:'term_viewer_button'+winid
													,listeners:{'click':function(button,e){applyRadlexTerms(button.radlexID,winid);}}
													});
						}
					,failure:function(responseObj,optionsObj){
							handleActionFailure('Sorry, we were unable to retrieve more information about the selected Radlex Term.');	
						}
				});	
			}
		});
    
	tabpanel.add(radlexpanel);
	tabpanel.doLayout();

	
	var radtbar = radtree.getTopToolbar();
	var twintrig = new Ext.app.SearchField({id:'radlex_searchfield'+winid,emptyText:'Search RadLex...',width:150});
	
	radtbar.addFill();
	radtbar.addItem(twintrig);
	radtree.setHeight(radtree.getInnerHeight()+19);
	
	var termpanel = Ext.getCmp('term_viewer'+winid)
	var termtbar = termpanel.getTopToolbar();
	var twintrigcombox = new Ext.form.TwinTriggerComboBox({id:'radlex_twintrigcombox'+winid
										 ,emptyText:'Enter a tag...'
										 ,width:150
										 ,editable:true
//										 ,typeAhead:true
										 ,mode:'local'
										 ,store: tag_store
										 ,displayField:'tag'
										 ,trigger1Class:'x-form-plus-trigger'
										 ,trigger2Class:'x-form-trigger'
										 ,onTrigger1Click:function(e,button,o){
											 var tag = this.getValue().trim();
											 if(tag.length < 3){
												Ext.Msg.show({
														title: 'Add a tag'
														,msg:'<div align="center">All tags must be at least 3 characters</div>'
														,minWidth:250
														,buttons: Ext.MessageBox.OK
												});
											 }else{
												var index = this.store.find('tag',tag);
												var tagID = (index>=0?this.store.getAt(index).data.radlex_id:'');
												
												var args = {};
												args.tag = tag;
												args.id = winid;
												args.radlex_id = tagID;
												applyCustomerTag(args);
												var temp_store = Ext.getCmp('custom_tag_store'+winid);
												if(temp_store != undefined){temp_store.reload();}
											 }
										 }
									});

	termtbar.addFill();
	termtbar.addItem(twintrigcombox);
	termpanel.setHeight(termpanel.getInnerHeight()+19);
	
	tabpanel.removeListener('activate',handleRadlexTab);
}


function navigateToRadlexTerm(radlexID,winid){
	var radlextree = Ext.getCmp('radlex_browser'+winid);
	var selNode = radlextree.getNodeById(radlexID);

	if(selNode != undefined){
		selNode.expand();
		selNode.select();
		selNode.ensureVisible();
	}
}


function handleTermTab(tabpanel,winid){
	if(winid==undefined){winid=tabpanel.ownerCt.winid;}
	var tree = getActiveFileTree();
	var node = getSelectedFileTreeNode();
	
	if(Ext.value(node.attributes.mm_key,'') != ''){
		var media_id = node.attributes.mm_key;
		var media_type = 'CF';
	}else{
		var media_id = node.id;
		var media_type = 'BM';
	}
	
	if(tabpanel.ownerCt.collapsed){toggle_properties_panel(false,winid);}

	var term_store = new Ext.data.JsonStore({
						id:'radlex_term_store'+winid
						,url:'/myfiles/update_customer_file.cfm'
						,baseParams:{action:'GETMEDIATAGS',allCustomers:true,media_id:media_id,media_type:media_type}
						,fields:['ct_id','media_id','radlex_id','media_type','tag']
					});
	term_store.load();
	term_store.sort('tag');
	
    	var tagpanel = new Ext.Panel({
		id:'fileProperties_tag_panel'+winid
		,height:203
		,layout:'border'
		,border:false
		,items: [
			{
				xtype:'grid'
				,id:'fileproperties_term_gridpanel'+winid
				,tbar:new Ext.Toolbar({autoWidth:true,cls:'x-panel-header',items:['<b>Applied Tags</b>']})
				,region:'west'
				,border:true
				,autoScroll: true
				,store: term_store
				,columns: [{header: "Tag/Term", width: Math.floor(this.getInnerWidth()*.4)-5, dataIndex:'tag'}]
				,multiSelector:true
				,hideHeaders:true
				,width:'40%'
				,height:144
				,listeners: {'cellclick':handleTermLeftClick,'cellcontextmenu':handleTermRightClick}
//				,listeners:{'click':function(node,e){if(!node.expanded){node.ui.ecClick(e);}}}
				,viewConfig: {getRowClass: function(r,index) {if(r.get('radlex_id') != ''){return 'x-grid-radlex';}}}			
			}
			
			,{
				xtype:'panel'
				,id:'applied_viewer'+winid
				,tbar:new Ext.Toolbar({autoWidth:true,cls:'x-panel-header',items:['<b>Term Viewer</b>']})
				,region:'center'
				,bodyStyle:'padding-left:5px; padding-top:5px;'
				,height:150
				,width:'60%'
				,autoScroll:true
				,html:'<div align="center" style="width:100%;"><div align="center" style="width:90%;"><br><br><b>RadLex terms (highlighted in red) can be viewed here when selected in the "Applied Tags" window.</b></div></div>'
			}
		]
	});

	tabpanel.add(tagpanel);
	tabpanel.doLayout();
	tabpanel.removeListener('activate',handleTermTab);
	
	var termgrid = Ext.getCmp('fileproperties_term_gridpanel'+winid);
	var gridtbar = termgrid.getTopToolbar();
	var remove_button = new Ext.Button({id:'delete_tag'+winid
							,text:'Remove selected tags'
							,iconCls:'viewer-DELETE-TERM'
							,disabled:true
							,listeners:{'click':function(button,e){
												var selNodes = termgrid.getSelectionModel().getSelections();
												if(selNodes.length>0){
													var args = {};
													args.selNodes = selNodes;
													args.id = winid;
													args.treeid = getActiveFileTree().id;
													args.node = getSelectedFileTreeNode();
													removeRadlexTerms(args);
												}
											}
									}
							});
	
	gridtbar.addFill();
	gridtbar.addItem(remove_button);
	termgrid.setHeight(termgrid.getInnerHeight()+19);	
	
	var gridviewer = Ext.getCmp('applied_viewer'+winid);
	gridviewer.getTopToolbar().addItem(new Ext.Button({id:'blankbutton'+winid,text:'',disabled:true}));
	gridviewer.setHeight(gridviewer.getInnerHeight()+19);
}


function getRadlexViewerTplMarkup(winid,applied,tree){
	applied = Ext.value(applied,false);
	tree = Ext.value(tree,true);

	var tpl = [
		'<table align="left" width="96%">',
			'<tr>',
				'<td style="white-space:nowrap;" width="75px"><b>Name:&nbsp;&nbsp;</b></td>',
				'<td align="left" colspan="2" width="100%">{name}</td>',
				'<td '+(!applied?'id="term_viewer_button'+winid+'" ':'')+'width="150px" rowspan="2" valign="top" align="right"></td>',
			'</tr>',
			'<tr><td><b>RadLex&nbsp;ID:&nbsp;&nbsp;</b></td><td colspan="3"><a href="#" onClick=\'launchExtWindow("{uri}","{name}",null,null,null,true);\'>{radlexID}</a></td></tr>',
			
			'<tpl if="definition != \'\'">',
				'<tr><td><b>Definition:</b></td><td colspan="3">{definition}</td></tr>',
			'</tpl>',
			
			'<tpl if="children.length != 0">',
				'<tr><td colspan="4"><b>&nbsp;</b></td></tr>',
				'<tr><td colspan="4"><b>RadLex Children:</b></td></tr>',
				'<tr><td colspan="4">',
				'<tpl for="children">',
					'<tpl if="xindex &gt; 1">,&nbsp;</tpl>',
					(!applied && tree?'<a href="#" onClick=\'navigateToRadlexTerm("<tpl for="attributes">{id}</tpl>","'+winid+'");\'>{text}</a>':'<tpl for="attributes">{id}</tpl>'),
				'</tpl>',
				'</td></tr>',
			'</tpl>',
			
			'<tpl if="parents.length != 0"><tpl if="parents[0].text != \'RadLex term\'">',
				'<tr><td colspan="4"><b>&nbsp;</b></td></tr>',
				'<tr><td colspan="4"><b>RadLex Parents:</b></td></tr>',
				'<tr><td colspan="4">',
				'<tpl for="parents">',
					'<tpl if="xindex &gt; 1">,&nbsp;</tpl>',
					(!applied && tree?'<a href="#" onClick=\'navigateToRadlexTerm("<tpl for="attributes">{id}</tpl>","'+winid+'");\'>{text}</a>':'<tpl for="attributes">{id}</tpl>'),
				'</tpl>',
				'</td></tr>',
			'</tpl></tpl>',
		'</table>'
	];

	return tpl;
}



function handleRadlexLeftClick(grid,rowIndex,columnIndex,e){
	var winid = grid.ownerCt.ownerCt.ownerCt.winid;
	Ext.getCmp('apply_terms'+winid).enable();
}

function handleRadlexRightClick(grid,rowIndex,cellIndex,e){
	e.stopEvent();
	
	var radlex_search_menu = new Ext.menu.Menu({
					id: 'radlex_search_menu',
					items: [{
								text: 'Apply Selected Terms'
								,iconCls:'viewer-ADD-TERM'
								,handler: function(){applyRadlexTerms(grid.getSelections(),grid.ownerCt.ownerCt.ownerCt.winid);}
							}
								
							,'-',{text:'Cancel',iconCls:'menu-CANCEL',handler: function(){this.destroy();}}
						]   
					});

	radlex_search_menu.showAt(e.getXY());	
}

function handleTermLeftClick(grid,rowIndex,columnIndex,e){
	var tree = false;
	var applied = true;

	if(Ext.WindowMgr.getActive() != null){
		var share_args = getShareWindowArgs(grid);
		var node = share_args.share_node;
		var winid = share_args.share_id;
		tree = true;
	}else{
		var node = getSelectedFileTreeNode();
		var winid = grid.ownerCt.ownerCt.ownerCt.winid;
	}
	var record = grid.getStore().getAt(rowIndex);

	if(!node.attributes.restricted && grid.store.getAt(0).data.ct_id != 'blank_record'){
		Ext.getCmp('delete_tag'+winid).enable();
	}

	if(Ext.value(record.data.radlex_id,'') != ''){
		var radlexTplMarkup = getRadlexViewerTplMarkup(winid,applied,tree);
		var radlexTpl = new Ext.XTemplate(radlexTplMarkup);
	
		Ext.Ajax.request({
			url:'/myfiles/myfiles.json.radlex.cfm'
			,method:'POST'
			,params:{action:'GETTERM',radlexID:record.data.radlex_id}
			,success:function(responseObj,optionsObj){
					var JSON = Ext.decode(responseObj.responseText);
					var tpl_args = {radlexID:JSON.attributes.id};
					tpl_args.winid = winid;
					Ext.each(JSON.children,function(child,index,a){
							if(child.children.length == 0){
								tpl_args[child.tag] = Ext.util.Format.capitalize(child.text);
							}else{
								tpl_args[child.tag] = child.children;
							}
						});
					
					var term_viewer = Ext.getCmp('applied_viewer'+winid);
					radlexTpl.overwrite(term_viewer.body, tpl_args);
				}
			,failure:function(responseObj,optionsObj){
					handleActionFailure('Sorry, we were unable to retrieve more information about the selected Radlex Term.');	
				}
		});	
	}
}

function handleTermRightClick(grid,rowIndex,cellIndex,e){
	if(grid.store.getAt(0).data.ct_id != 'blank_record'){
		e.stopEvent();
		var winid = grid.ownerCt.ownerCt.ownerCt.winid;
		
		var radlex_term_menu = new Ext.menu.Menu({
						id: 'radlex_term_menu',
						items: [{
									text: 'Remove tag'
									,iconCls:'viewer-DELETE-TERM'
									,handler: function(button,e){
										var selNodes = new Array();
										selNodes.push(grid.getStore().getAt(rowIndex));
										var args = {};
										args.selNodes = selNodes;
										if(Ext.WindowMgr.getActive() != null){
											var share_args = getShareWindowArgs(grid);
											args.id = share_args.share_id;
											args.node = share_args.share_node;
										}else{
											args.id = winid;
											args.node = getSelectedFileTreeNode();
										}
										args.treeid = getActiveFileTree().id;
										removeRadlexTerms(args);
									}
								}
									
								,'-',{text:'Cancel',iconCls:'menu-CANCEL',handler: function(){this.destroy();}}
							]   
						});
	
		radlex_term_menu.showAt(e.getXY());	
	}
}


function applyCustomerTag(args){
	var activewindow = Ext.WindowMgr.getActive();
	if(activewindow != undefined){
		var share_args = getShareWindowArgs(activewindow);
		var node = share_args.share_node;
	}else{
		var node = getSelectedFileTreeNode();
	}
	var tree = getActiveFileTree();
	
	if(Ext.value(node.attributes.mm_key,'') != ''){
		var media_id = node.attributes.mm_key;
		var media_type = 'CF';
	}else{
		var media_id = node.id;
		var media_type = 'BM';
	}

	Ext.getBody().mask('Adding your tag...','ext-el-mask-msg x-mask-loading');
	
	Ext.Ajax.request({
			url:'/myfiles/update_customer_file.cfm'
			,method:'POST'
			,params:{action:'ADDCUSTOMERTAG',media_type:media_type,media_id:media_id,tag:args.tag,radlex_id:args.radlex_id}
			,success:function(responseObj,optionsObj){
					if(Ext.getCmp('fileproperties_term_gridpanel'+args.id) != undefined){
						Ext.getCmp('fileproperties_term_gridpanel'+args.id).getStore().load();
						if(tree.winid != undefined && tree.winid != args.id){
							Ext.getCmp('fileproperties_term_gridpanel'+tree.winid).getStore().load();
						}
					}
					Ext.getBody().unmask();
					Ext.Msg.show({
							title: 'Success!'
							,msg:'<div align="center">Your tag has been successfully added.</div>'
							,minWidth:300
							,buttons: Ext.MessageBox.OK
					});
				}
				
			,failure:function(responseObj,optionsObj){
					Ext.getBody().unmask();
					handleActionFailure('Sorry, we were unable to add your tag.');
				}
		});	
}


function applyRadlexTerms(radlexID,id){
	var activewindow = Ext.WindowMgr.getActive();
	if(activewindow != undefined){
		var share_args = getShareWindowArgs(activewindow);
		var node = share_args.share_node;
	}else{	
		var node = getSelectedFileTreeNode();
	}
	var tree = getActiveFileTree();
	
	if(Ext.value(node.attributes.mm_key,'') != ''){
		var media_id = node.attributes.mm_key;
		var media_type = 'CF';
	}else{
		var media_id = node.id;
		var media_type = 'BM';
	}
	
	Ext.getBody().mask('Adding RadLex term...','ext-el-mask-msg x-mask-loading');
	
	Ext.Ajax.request({
			url:'/myfiles/update_customer_file.cfm'
			,method:'POST'
			,params:{action:'ADDRADLEXTERMS',radlex_id:radlexID,media_id:media_id,media_type:media_type}
			,success:function(responseObj,optionsObj){
					if(Ext.getCmp('fileproperties_term_gridpanel'+id) != undefined){
						Ext.getCmp('fileproperties_term_gridpanel'+id).getStore().load();
						if(tree.winid != undefined && tree.winid != id){
							Ext.getCmp('fileproperties_term_gridpanel'+tree.winid).getStore().load();
						}
					}
					Ext.getBody().unmask();
					Ext.Msg.show({
							title: 'Success!'
							,msg:'<div align="center">The selected RadLex terms were successfully added to your file.</div>'
							,minWidth:300
							,buttons: Ext.MessageBox.OK
					});
				}
				
			,failure:function(responseObj,optionsObj){
					Ext.getBody().unmask();
					handleActionFailure('Sorry, we were unable to add the selected RadLex terms.');
				}
		});	
}

function removeRadlexTerms(args){
	if(args.treeid == undefined){args.treeid = 'editFilesTree';}
	var ct_list = '';

	for(var i=0; i<args.selNodes.length; i++){
		if(ct_list!=''){ct_list = ct_list + ',';}	
		ct_list = ct_list + args.selNodes[i].data.ct_id;
	}

	Ext.getBody().mask('Removing Radlex terms...','ext-el-mask-msg x-mask-loading');
	
	Ext.Ajax.request({
			url:'/myfiles/update_customer_file.cfm'
			,method:'POST'
			,params:{action:'REMOVEMEDIATAGS',ct_list:ct_list,media_type:(args.treeid == 'my_bookmarks'?'BM':'CF'),media_id:(args.treeid == 'my_bookmarks'?args.node.id:args.node.attributes.mm_key),am_id:args.node.attributes.am_id,searchable:(args.node.attributes.searchable==undefined,false,args.node.attributes.searchable)}
			,success:function(responseObj,optionsObj){
					var json = Ext.util.JSON.decode(responseObj.responseText);

					if(Ext.value(json.search_toggle,false)){
						args.node.attributes.searchable = false;
						var search_checkbox = document.getElementById('share_check');
						if(search_checkbox != null){
							search_checkbox.checked = false;
						}
					}
					Ext.getCmp('fileproperties_term_gridpanel'+args.id).getStore().load();
					Ext.getCmp('delete_tag'+args.id).disable();
					if(Ext.WindowMgr.getActive() != null){
						var tree = getActiveFileTree();
						var appliedgrid = Ext.getCmp('fileproperties_term_gridpanel'+tree.winid);
						if(appliedgrid != undefined){
							appliedgrid.getStore().load();
							Ext.getCmp('delete_tag'+tree.winid).disable();
						}
					}
					
					Ext.getBody().unmask();
					Ext.Msg.show({
							title: 'Success!'
							,msg:'<div align="center">The selected tags were successfully removed.</div>'
							,minWidth:300
							,buttons: Ext.MessageBox.OK
					});

				}
			,failure:function(responseObj,optionsObj){
					Ext.getBody().unmask();
					handleActionFailure('Sorry, we were unable to remove the selected tags.');
				}
		});	
}

function handleRadLexDataStoreLoadException(o, json, arg, e) {
	handleActionFailure('Sorry, we were unable to load the Radlex terms.');
}


function handleFileOption(thebutton,theevent){
	var tree = getActiveFileTree();

	var selNode = tree.selModel.selNode;
	if(selNode != null && selNode != undefined){
		if (tree.id != 'my_bookmarks'){
			handleTreeRightClick(getSelectedFileTreeNode(),theevent,thebutton);
		}else{
			handleBookmarkRightClick(getSelectedFileTreeNode(),theevent,thebutton);	
		}
	}
}


function handleViewerBookmarkButton(b,e){
	var bm_type = (Ext.value(displaynode.attributes.pubmed_id,'')==''?Ext.value(displaynode.attributes.mt_name,'URL'):'PUBMED');
	var bm_source = myrsnatabs.getActiveTab().title;
//	var bm_descr = Ext.getCmp('myfilesViewerToolbar'+b.winid)
	var bm_descr = displaynode.attributes.mm_clientfile;
	var media_id = '';
	if(Ext.value(displaynode.attributes.mm_key,'') != ''){
		media_id = displaynode.attributes.mm_key;
	}else if(Ext.value(displaynode.attributes.pubmed_id,'') != ''){
		media_id = displaynode.attributes.pubmed_id;
	}
	var bm_url = (media_id == '' ? Ext.value(displaynode.attributes.bm_url,'') : '');

	bookmark_popup(bm_type,bm_source,bm_descr,bm_url,media_id);
}


function handlePOCCMEWindow(button,e){
	var node = getSelectedFileTreeNode();
	var share_win = Ext.WindowMgr.getActive();
	var zindex = (share_win != null ? share_win.el.dom.style.zIndex : 0);
	
	var launchwin = new Ext.Window(
		{
			id:'poc_cme_window'
			,title:'Point of Care CME Form'
			,width:getWidth() - 50
			,height:getHeight() - 50
			,modal:true
			,draggable:false
			,autoScroll:true
			,iconCls:'myRSNA-gold-star'
			,items:[
				{xtype:'iframepanel'
				,id:'poc_cme_iframe'
				,border:false
				,cls:'x-window-body'
				,width:'100%'
				,height:'100%'
//				,defaultSrc:url
//				,loadMask:'Loading...'
				}
			]
			,listeners:{'show':function(win){if(share_win != null){share_win.el.dom.style.zIndex = '8000';}}
					,'close':function(win){if(share_win != null){share_win.el.dom.style.zIndex = zindex;}}
			}
		}
	).show();
}


/*function handlePOCCMETab(tabpanel){
	var winid = tabpanel.ownerCt.winid;
	if(tabpanel.ownerCt.collapsed){toggle_properties_panel(false,winid);}	
}*/


/**************************************************************************************************************
	DISCUSSION BOARD CODE
**************************************************************************************************************/
function handleDiscussionTab(tabpanel){
/*
bw work
query BB Using mm_id ...

to start we query to get all fourms that have this De-hashed mm_key
of there are none then do default, get the mm_id and build a fourm to take in the Discussion Title.
on submit go to /BB where we check to see if they exist and if not make them, or logg them in if they do,
and create a new fourm.

If there are fourms then display them and at the bottm give us three opions, one add New Discussion(fourm), New Topic(topic), Curent Discussion (Display Discussion and Topics and via that the ability to reply)
*/	
	var winid = tabpanel.ownerCt.winid;
	
	if(displaynode.attributes.mm_key != ''){
		var media_id = displaynode.attributes.mm_key;
		var media_type = 'CF';
		var media_name = displaynode.attributes.mm_clientfile;
	}else{
		var media_id = displaynode.id;
		var media_type = 'BM';
		var media_name = displaynode.attributes.mm_clientfile;
	}

	var divID = 'bbGrid_div' + media_type;
	if(tabpanel.ownerCt.collapsed){toggle_properties_panel(false,winid);}

	var DiscussionPanel = new Ext.form.FormPanel({	
		id:'fileBB_term_panel'
		,height:tabpanel.ownerCt.height
		,border:false
		,header:false
		,autoScroll:true
		,items: [{
					 id: 'mm_key'
					 ,name: 'mm_key'
					 ,xtype: 'hidden'
					 ,value: media_id}
					 
				,{ border:false
					,header:false
					,html:'<div style="width:100%; height:100%" id="'+ divID +'"></div>'}] 
    });	
	
	var temp = loadDiscussionWidget(media_id,tabpanel);
	tabpanel.add(temp);
	tabpanel.doLayout();
}//handleDiscussionTab

function loadDiscussionWidget(media_id,tabpanel){
	var media_type = (displaynode.attributes.mt_name == 'URL' ? 'BM' : 'CF');
	var media_name = displaynode.attributes.mt_name;
	
	var divID = 'bbGrid_div' + media_type;
	var w = tabpanel.getInnerWidth();
	var total_col_width = w-10;
	var h = 147;
	var column1 = total_col_width * (.50);
	var column2 = total_col_width * (.35);
	var column3 = total_col_width * (.15);

	var dtree = new Ext.tree.ColumnTree({
	   id:'cTree',
       rootVisible:false
       ,autoScroll:true
	   ,height:tabpanel.ownerCt.height+10
	   ,width:w
	   ,title:'Discussions'
	   ,columns:[{header:'Name',width:column1,dataIndex:'name'}
				,{header:'Posts',width:column2,dataIndex:'count'}
				,{header:'Action',width:column3,dataIndex:'reply'}
				 ]
		,loader: new Ext.tree.TreeLoader({
				   dataUrl:'/plugins/bb/Discussion.cfm'
				   ,baseParams:{ACTION:'VIEW_D2',media_id:media_id,media_name:media_name,media_type:media_type}
				   ,requestMethod:'GET'
				   ,uiProviders:{'col':Ext.tree.ColumnNodeUI}
				})       
		,root: new Ext.tree.AsyncTreeNode({text:'Category',expanded: true})
		,listeners: {click: handleDisRowClicked,dblclick:handleDisDblRowClick}
   });
	
	return dtree;
}


function handleCreateForumWindow(p,media_id,tag,media_type){
	new Ext.Window({
			id:'add_dis'
			,modal:true
			,title:'Create New Topic'
			,media_id:media_id
			,autoScroll:false
			,items:[
					new Ext.Panel({
							id:'push_forums'
							,labelAlign:'top'
							,bodyStyle:'padding:20px'
							,autoLoad:{url:'/bb/myrsna_create_fourm.cfm',params:{p:1,q:media_id,n:tag,type:media_type},text:'Loading',scripts:true}
						})  
				]
		}).show();
}


function handleDisRowClicked (node) {
	if(node.isExpanded()){
		node.collapse();
     }else{
		 node.expand(false,true);
 	}
	
}

function handleDisDblRowClick (node, e) { 
	//IF there is a topic present. Else, do nothing. 
	if (node.attributes.tID){
		var topicID = node.attributes.tID;
		var header = node.attributes.name;
		
		//Create window and load forum threads.
		var add_dis = new Ext.Window({
					 id:'add_dis',
					 title:'Posts for ' + header,
					 autoScroll:true,
					 width:900,
					 height:600,
					 autoLoad:{url:'/bb/messages.cfm', params:{threadid:topicID}, text:'loading', scripts:true, params:{threadid:topicID}}
				}).show();
	}
}


function retrieveURL(urlX) {
	var tree = Ext.getCmp('cTree');
	
	//Reload the page
	tree.getLoader().load(tree.getRootNode(),function(treeloader,node){
											node.expandChildNodes(true);
											});
	
	Ext.getCmp('add_dis').load({ id:'add_dis'
								   ,width:900
								   ,height: 600
								   ,autoScroll:true
								   ,loadScripts: true
								   ,scripts:true
								   ,url:urlX
								   });
}//retrieveURL

	
function make_textarea(){
var target_content=document.getElementById('textarea_content').innerHTML;
document.getElementById('textarea_target').innerHTML='';
	var txtComplaint = new Ext.form.HtmlEditor({
	id: 'body'
	,name: 'body'
	,hideLabel: true
	,autoWidth:true
	,height: 250
	,renderTo:'textarea_target'
	,value:target_content
	});
}//end funk 