##########################################################
#                #                                       #
#	 ManyPage    #    See habille.pl / Voir habille.pl   #
#                #                                       #
##########################################################
#
# Ici, on va gerer toutes les references sur des pages html pour ainsi
# Avoir un habillage parallele
#
###################
#
#  Copyright (C) 2000 Pierre Cordani - Pascal Vuylsteker
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# Ce programme est un logiciel libre ; vous pouvez le redistribuer et/ou le modifier conformŽment
# aux dispositions de la Licence Publique GŽnŽrale GNU, telle que publiŽe par la Free Software
# Foundation ; version 2 de la licence, ou encore (ˆ votre choix) toute version ultŽrieure.
#
###################

sub parallele_path
{
 local ($contenu,$le_path,$partie_path,$new) = @_;
 
# print "$contenu,$le_path,$partie_path,$new\n";
 local ($A_modifier) = "";
 local ($i_par) = 0;
 while($Parallele_oui[$i_par])
  {
   local ($temp) = $Parallele_oui[$i_par];
   $temp =~ s/^\/*//;
   $A_modifier .= "|".$temp if($A_modifier ne "");
   $A_modifier = $temp if($A_modifier eq "");
   
   if($name =~ /(.*?)$Source$Parallele_oui[$i_par].*/)
    {
	 $parallele_ok = 1;
	}
   $i_par++;
  }
 if($A_modifier =~ /.*|.*/)
  {
   $A_modifier = "(?:$A_modifier)";
  }
 $partie_path =~ s/^\/*//;

 local ($buffer) = $contenu;
#point();
 $mini_filtre = "(?:A|AREA|BASE|LINK)";
 $filtre = "($mini_filtre(?:.(?!HREF))*?)";

#Elimination des references exterieures a la partie concernee 
 $buffer =~ s/<!---PARALLELE--->.*?<!---\/PARALLELE--->//sig;
 
# $contenu =~ s/<!---PARALLELE--->//ig;
# $contenu =~ s/<!---\/PARALLELE--->//ig;

 #On protege les references a ne pas toucher
 
 while($contenu =~ /.*(<!---PARALLELE--->(.*?)<!---\/PARALLELE--->).*/is)
  {
   local ($tout,$cont) = ($1,$2);
   $cont =~ s/ HREF/ MP.SAPI.HREF.PROTECT/gis;
   $contenu =~ s/$tout/$cont/gs;
  }


 $buffer =~ s/<$filtre((.(?!HREF))*?)\/\1>//sig;
 $buffer =~ s/<$filtre\s*HREF\s*=\s*"\s*(([^"])*?):\/\/(([^"])*?)\s*"//sig;
 $buffer =~ s/<$filtre\s*HREF\s*=\s*"\s*\/(?!$A_modifier).*?\s*"//sig;


#Elimination des parties protegees
 $i_par = 0;

 while($Parallele_non[$i_par])
  {
   $buffer =~ s/<$filtre\s*HREF\s*=\s*"\s*$Parallele_non[$i_par]\/.*?\s*"//sig;
   $i_par++;
  }

# $buffer =~ s/<$filtre\s*HREF\s*=\s*"\s*\/(?!$partie_path).*?\s*"//sig;


#Il faut eliminer les liens relatifs externes
#point();
 while($buffer =~ /(<$filtre\s*HREF\s*=\s*"\s*)(\..\/..\/.*?)\s*"/si)
  {
    local (@cont) = ($1,$3);
    if(elimine_points($le_path.$cont[1]) =~ /^\/$A_modifier.*/)
	 {
      local ($rest) = $cont[0];
	  $rest =~ s/^</<=/;
	  $buffer =~ s/\Q$cont[0]$cont[1]\E/<SAPI.PARALLELE.OK>$rest$cont[1]<\/SAPI.PARALLELE.OK>/sg;
	 }
	else
	 {
      $buffer =~ s/\Q$cont[0]$cont[1]\E//sg;
	 }
  }

 $buffer =~ s/<SAPI.PARALLELE.OK><=/</g;
 $buffer =~ s/<\/SAPI.PARALLELE.OK>//g;
#print "$buffer\n";
#exit;
#point();

#Modification des references restantes
 local($i_mono) = 0;
 while($Les_Langues_Suf[$i_mono])
  {
   while($buffer =~ /(<$filtre\s*HREF\s*=\s*"\s*)(([^"])*?)\.($Les_Langues_Suf[$i_mono]\.html?)(#.*?)?\s*"/is)
    {
     local (@cont) = ($1,$2,$3,$5,$6);
#	 print "($1),($2),($3),($5)\n\n\n";
#     print "$cont[0]$cont[2]\.$cont[3]\n";
     $contenu =~ s/\Q$cont[0]$cont[2].$cont[3]$cont[4]\E/<$cont[1] HREF="$cont[2].$new.$cont[3]$cont[4]/sg;
     $buffer =~ s/\Q$cont[0]$cont[2].$cont[3]$cont[4]\E//sig;
    }
   $i_mono++;
  }
#point();

 while($buffer =~ /(<$filtre\s*HREF\s*=\s*"\s*)((.(?!"))*?)(\.\+)(#.*?)?\s*"/is)
  {
   local (@cont) = ($1,$2,$3,$5,$6);
   $contenu =~ s/\Q$cont[0]$cont[2]$cont[3]$cont[4]\E/<$cont[1] HREF="$cont[2].$new.+$cont[4]/sg;
   $buffer =~ s/\Q$cont[0]$cont[2]$cont[3]$cont[4]\E//sg;
  }
# $contenu =~ s/<A\s*HREF\s*=\s*"\s*(.*?)\.\+\s*"/<A HREF="$1.$new.+"/gis;
# $buffer =~ s/<A\s*HREF\s*=\s*"\s*(.*?)\.\+\s*"//gis;
point();

 while($buffer =~ /(<$filtre\s*HREF\s*=\s*"\s*)((.(?!"))*?)\.(html?)(#.*?)?\s*"/is)
  {
   local (@cont) = ($1,$2,$3,$5,$6);
#   print "($1,$2,$3,$5)\n";
   $contenu =~ s/\Q$cont[0]$cont[2].$cont[3]$cont[4]\E/<$cont[1] HREF="$cont[2].$new.$cont[3]$cont[4]/sg;
   $buffer =~ s/\Q$cont[0]$cont[2].$cont[3]$cont[4]\E//sg;
  }
 $contenu =~ s/ MP\.SAPI\.HREF\.PROTECT/ HREF/gs;
   
 return $contenu;
}

return 1;
