use strict;
#process_dirs();
change_file_names();
exit;

#-----------------------------------------

sub process_dirs{
	
opendir(DIR, ".");
my(@dirs);
@dirs= sort(grep(/[AB]/,readdir(DIR)));

scalar(@dirs)> 0 or die("ERROR: no dirs");
closedir(DIR);
                
my($dir,$newDir,@elements);
foreach $dir (@dirs)
{
	print("-- $dir --\n");
	chdir($dir."/chromats") or die("cannot change to ".$dir."/chromats");
	change_file_names();
	chdir("../..") or die("cannot change to ../..");
}

}


#020529Sanguis19.f_G05_020529Sanguis19.f_036.ab1
#=>
#SS02052919_G05.f_G05_036.ab1

sub change_file_names{
opendir(DIR, ".");
my(@files);
@files= sort(grep(/^[csCS]/,readdir(DIR)));
scalar(@files)> 0 or die("ERROR: no files");
closedir(DIR);

my($file,$newFile,@elements);
foreach $file (@files) 
{   
	$newFile = lc($file);
	#020529SS19.f_G05_020529SS19.f_036.ab1
	$newFile =~ s/sanguis/ss_/g;
	$newFile =~ s/ss/ss_/g;
	$newFile =~ s/cp/cp_/g;
	$newFile =~ s/a/_a/g;
	$newFile =~ s/r/_r/g;
	$newFile =~ s/f/_f/g;

	@elements=split(/[_\.]+/,$newFile);
	
	$newFile=join(":",@elements);

	my($element, $date, $plate, $proj);
	foreach $element (@elements[0..2])
	{
		if (length($element)>=6 and substr($element,0,2) eq "02")
		{
			$date=substr($element,0,6);
			if(length($element)>6) { $plate=substr($element,6); }
		}
		elsif ($element eq "cp") { $proj=$element;} 
		elsif ($element eq "ss") { $proj=$element;}
		else { $plate=$element;}
	}

	if(length($plate)==3) { $plate="a".$plate; }
        if(length($plate)==2) { $plate="a2".$plate; }
        if(length($plate)==1) { $plate="a20".$plate; }

	my($direction, $position);
	foreach $element (@elements[2..scalar(@elements)])
	{
		if ($element eq "f") 	{ $direction=".b1";}
		elsif ($element eq "f1") { $direction=".b1";}
		elsif ($element eq "b1") { $direction=".b1";}
		elsif ($element eq "r") { $direction=".g1";}
		elsif ($element eq "r1") { $direction=".g1";}
		elsif ($element eq "g1") { $direction=".g1";}
		elsif ($element eq "t") { $direction=".t1";}
		elsif ($element =~ /[a-z]\d{2}/) { $position=$element;}
	}

	defined($proj)      or die("ERROR: project undefined: $file");
	defined($plate)     or die("ERROR: plate undefined: $file");
	defined($position)  or die("ERROR: position undefined: $file");
	defined($direction) or die("ERROR: direction undefined: $file");

	$newFile =$proj."_".$plate."_".$position.$direction;
		
	if($ARGV[0] eq "t") { print ("	" ,$file," => ", $newFile, "\n");}
	#else { rename($file, $newFile);}
}
}		
