function [FiltFileMat]=FiltNeuroscanFiles(FileMat,MaxMemory)
global NsStruct
%=========================================================================================
if nargin<2; MaxMemory=20; end
if nargin<1; FileMat=[]; end

[NFiles,FileMat]=ReadFileNames(FileMat,'*.cnt','Choose Neuroscan *.cnt file(s):');
if NFiles==0; return; end
[TransFileMat,TRStatusOut]=TransCntTnt(FileMat,1,MaxMemory);
TransFileMat=TransFileMat
FiltFileMat=FileNameExt2Mat(FileMat,'f.tnt',3);
for FileIndex=1:NFiles
	
	[TransFile,TransPath,TransFilePath]=GetFileNameOfMat(TransFileMat,FileIndex);
	[FiltFile,FiltPath,FiltFilePath]=GetFileNameOfMat(FiltFileMat,FileIndex);
	NsStruct=ReadNeuroscanStruct(TransFilePath);
	NsHeader=NsStruct.header;
	NsEvents=NsStruct.events;
	
	SampRate=NsHeader.rate;
	NChan=NsHeader.nchannels
	NPoints=NsHeader.numsamples
	LHeader=NsEvents(1).offset-1;
	
	Message=char('Copying file:');
	Message=char(Message,' ');
	Message=char(Message,['Orig file: ',TransFilePath]);
	Message=char(Message,['Copy file: ',FiltFilePath]);
	hmsgbox=msgbox(Message,'Info:','help');
	[CopyStatus,CopyMsg]=copyfile(TransFilePath,FiltFilePath);
	if ~CopyStatus
		hmsgbox=msgbox(CopyMsg,'Info:','help');
	end
	pause(.1)
		
	TransFid=fopen(TransFilePath,'r','l');
	fseek(TransFid,LHeader,'bof');
	FiltFid=fopen(FiltFilePath,'r+','l');
	fseek(FiltFid,LHeader,'bof');
	
	Nyquist=SampRate./2;
	LineFrequ=50;
	HighFiltStatus=0;
	HighFrequ=2;
	HighN=6;
	LowFiltStatus=1;
	LowFrequ=40;
	LowN=6;
	StopFiltStatus=0;
	StopFrequ=[LineFrequ-1 LineFrequ+1];
	StopN=6;
	
	if HighFiltStatus
		fprintf(1,'Highpass filtering of EEG data: HighFrequ: %g Hz; Order: %g;\n\n',HighFrequ,HighN);
		[BHigh,AHigh]=butter(HighN,HighFrequ./Nyquist,'high');
	end
	if LowFiltStatus
		fprintf(1,'Lowpass filtering of EEG data: LowFrequ: %g Hz; Order: %g;\n\n',LowFrequ,LowN);
		[BLow,ALow]=butter(LowN,LowFrequ./Nyquist,'low');
	end
	if StopFiltStatus
		fprintf(1,'Stopband filtering of EEG data: StopFrequ: %g - %g Hz; Order: %g;\n\n',StopFrequ(1),StopFrequ(2),StopN);
		[BLow,ALow]=butter(StopN,StopFrequ./Nyquist,'stop');
	end

	for ChanIndex=1:NChan	
		fprintf(1,'Sensor: %g\n',ChanIndex)
		FSeekStatus=fseek(TransFid,NsEvents(1).offset+(ChanIndex-1).*NPoints.*2,'bof');
		DataVec=fread(TransFid,NPoints,'int16');	
		if HighFiltStatus
			fprintf(1,'high ... ')
			DataVec=filtfilt(BHigh,AHigh,DataVec);
		end
		if LowFiltStatus
			fprintf(1,'low ... ')
			DataVec=filtfilt(BLow,ALow,DataVec);
		end
		if StopFiltStatus
			fprintf(1,'stop ... ')
			DataVec=filtfilt(BStop,AStop,DataVec);
		end
		FWriteStatus=fwrite(FiltFid,DataVec,'int16');	
	end
end
fclose(TransFid);
fclose(FiltFid);
[TransFileMat,TRStatusOut]=TransCntTnt(FiltFileMat,-1,MaxMemory);
return;
