TextViewer=new Object(); TextViewer.type=''; TextViewer.types={ 'ac3':'shBrushAS3', 'applescript':'shBrushAppleScript', 'bash':'shBrushBash', 'sh':'shBrushBash', 'csharp':'shBrushCSharp', 'coldfusion':'shBrushColdFusion', 'cpp':'shBrushCpp', 'css':'shBrushCss', 'delphi':'shBrushDelphi', 'diff':'shBrushDiff', 'erlang':'shBrushErlang', 'groovy':'shBrushGroovy', 'javascript':'shBrushJScript', 'js':'shBrushJScript', 'java':'shBrushJava', 'javafx':'shBrushJavaFX', 'perl':'shBrushPerl', 'php':'shBrushPhp', 'plain':'shBrushPlain', 'powershell':'shBrushPowerShell', 'python':'shBrushPython', 'py':'shBrushPython', 'ruby':'shBrushRuby', 'sass':'shBrushSass', 'scala':'shBrushScala', 'sql':'shBrushSql', 'vb':'shBrushVb', 'xml':'shBrushXml', } TextViewer.load=function(ready){ if(!TextViewer.load.done){ OC.addStyle('files_textviewer','syntaxhighlighter/shCoreDefault'); OC.addStyle('files_textviewer','syntaxhighlighter/shCore'); OC.addStyle('files_textviewer','syntaxhighlighter/shThemeDefault'); OC.addStyle('files_textviewer','style'); OC.addScript('files_textviewer','syntaxhighlighter/shCore',function(){ if(ready){ ready(); } }); }else if(ready){ ready(); } } TextViewer.load.done=false; TextViewer.showText=function(dir,file){ var type; var parts=file.split('.'); var ext=parts[parts.length-1]; if(TextViewer.types[ext]){ type=ext; }else{ type='plain'; } TextViewer.type=type; var div=$('
'); div.click(TextViewer.hideText); TextViewer.textFrame=$('
'); TextViewer.textFrame.click(function(event){ event.stopPropagation(); }); TextViewer.textFrame.pre=$('
');
	div.append(TextViewer.textFrame);
	TextViewer.textFrame.append(TextViewer.textFrame.pre);
	$('body').append(div);
	TextViewer.loadHighlighter(function(){
		$.ajax({
			url: OC.filePath('files','ajax','download.php')+'?files='+encodeURIComponent(file)+'&dir='+encodeURIComponent(dir),
			complete: function(text){
				TextViewer.textFrame.pre.text(text.responseText);
				TextViewer.textFrame.pre.attr('class','brush: '+TextViewer.type+';');
				SyntaxHighlighter.highlight(null,TextViewer.textFrame.pre[0]);
			}
		});
	});
}

TextViewer.hideText=function(){
	$('#textframe').remove();
} 

TextViewer.loadedTypes=new Array();
TextViewer.loadHighlighter=function(ready){
	TextViewer.load(function(){
		TextViewer.type=(TextViewer.types[TextViewer.type])?TextViewer.type:'plain';
		if(!TextViewer.loadedTypes[TextViewer.type]){
			OC.addScript('files_textviewer','syntaxhighlighter/'+TextViewer.types[TextViewer.type],function(){
				TextViewer.loadedTypes[TextViewer.type]=true;
				SyntaxHighlighter.vars.discoveredBrushes=null; //force the highlighter to refresh it's cache
				if(ready){
					ready();
				}
			});
		}else{
			if(ready){
				ready();
			};
		}
	});
}

$(document).ready(function() {
	/*
	if(typeof FileActions!=='undefined'){
		FileActions.register('text','View','',function(filename){
			TextViewer.showText($('#dir').val(),filename);
		});
		FileActions.setDefault('text','View');
		FileActions.register('application/xml','View','',function(filename){
			TextViewer.showText($('#dir').val(),filename);
		});
		FileActions.setDefault('application/xml','View');
	}
	*/
	OC.search.customResults.Text=function(row,item){
		var text=item.link.substr(item.link.indexOf('file=')+5);
		var a=row.find('a');
		a.data('file',text);
		a.attr('href','#');
		a.click(function(){
			var file=text.split('/').pop();
			var dir=text.substr(0,text.length-file.length-1);
			TextViewer.showText(dir,file);
		});
	}
});