##########################################################
#                #                                       #
#	 ManyPage    #    See habille.pl / Voir habille.pl   #
#                #                                       #
##########################################################
#
# Cette fonction creera les diferents fichiers de destination
#
###################
#
#  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 ecriture_destination
{local ($name,$dest,$info,$langue,$mdp,$mdp_flag,$option) = @_;
 
# print "-->$true_name\n";
# print "-->$name\n";
# print "-->$dest\n";
# print "$info\n";
 
 $info =~ s/$SAPI_LT/</g;
 $info =~ s/$SAPI_GT/>/g;

 $File_Cont++;

#
# On remplace <(?:PM\.)?KEYWD\.TITLEBACK> (NEXT et UP) par le nom du titre correspondant 
#
 
 $info = &cherche_title($info) if (!($option =~ /.*w.*/is));
 &aff_debug("J'ai fini le traitement des titres back, next et up") if ($debug);

 if($Parallele ne "" && $parallele_ok)
  {
   $dest = remplace_nom_parallele($dest,$Parallele);
#   print "-=->$dest\n";
   local ($the_path) = $dest;
   $the_path =~ s/^$Dest//;
   $the_path =~ s/(.*)\/.*/$1\//;
   $info = parallele_path($info,$the_path,$Parallele_partie,$Parallele);
   &aff_debug("J'ai fini la gestion des liens paralleles") if ($debug);
  }

# 
# Remplacement des macros dans les objets
# 
# correction PVK 19/12/00 : $Date_Annee_Long
 local($i_lan) = 0;
 local (@my_time) = gmtime(time);
 local (@his_info) = stat($name);
 local (@his_time) = gmtime($his_info[9]);
 
 #important, car sinon il y a un jour de retard
 $my_time[4]++;
 $his_time[4]++;
 # Correction de la date (Cf PVK)
 $Date_Annee_Long = $his_time[5] + 1900;
 
 $Date_tout_court =  `date '+%d/%m/%Y'`;
 $Date_habillage =  `date '+%a, %d %b %Y %H:%M:%S GMT'`;
 $Date_habillage =~ s/\n//g;

 $info =~ s/<\s*(?:PM\.)?KEYWD\.DATE\s*>/$Date_tout_court/gis;
 $info =~ s/<\s*(?:PM\.)?KEYWD\.DATE\.MODIF\s*>/$his_time[3]\/$his_time[4]\/$Date_Annee_Long/gis;
 $info =~ s/<\s*(?:PM\.)?KEYWD\.DATE\.HAB\s*>/$Date_habillage/gis;
 $info =~ s/<\s*(?:PM\.)?KEYWD\.LANG\s*>/$langue/gis if($langue ne 'BI');
 $info =~ s/<\s*(?:PM\.)?KEYWD\.LANG\s*>/<SAPI.LN.FR>fr<\/SAPI.LN.FR><SAPI.LN.EN>en<\/SAPI.LN.EN>/gis if($langue eq 'BI');


#
# Fin de remplacement des macros dans les objets
# 

#
# On gere tout les tests qui peuvent exister
# <MP.IF EXIST=`...` THEN=`...`> avec la fonction: gestion_test
# Avec la commande suivante : $info = &gestion_test($info); 
#   
   $info = &gestion_test($info);
 &aff_debug("J'ai fini la gestion des tests") if ($debug);

 
 local($l) = lc($langue);
  
 $dest_en = $dest_fr = $dest;
 $info_en = $info_fr = $info;

# print "$langue et $mdp_flag\n";

#
# Je me trouve dans les cas suivants:
#
# Un fichier SGML ancien format avec le mode MONO -> creation d'un fichier html
# Ou un fichier SGML nouveau format -> creation d'un fichier html
#

 if($langue eq "MONO")
  {
   $info =~ s/ HREF\s*=\s*"([^"]*?)\.\+/ HREF="$1\.html/gis;

   $info =~ s/<([^><]*).FR>//isg;

   local($i_mono) = 0;
   while($Les_Langues_Suf[$i_mono])
    {
     $info =~ s/<\s*(([^><]*)(_|\.))?$Les_Langues_Suf[$i_mono]\s*>(.*?)<\s*\/(\1)?$Les_Langues_Suf[$i_mono]\s*>//gis;
     $i_mono++;
	}

if($file_suf eq "js2")
{
    $info =~ s/'/\\\'/gs;
    $info =~ s/`/'/gs;
    $info =~ s/\n//gs;
    $dest =~ s/js2$/js/gs;
}

   open (DEST,">$dest");
   print DEST $info;
   close (DEST);
  }
 else
  {
#
# Un fichier SGML ancien format avec le mode BI ou FR ou EN
# -> Creation des fichiers .fr.html et .en.html ou .html
#
   if($mdp_flag == 1)
    {
     if($langue =~ /FR.*/is || $langue eq "BI")
      {
       $dest_fr =~ s/\.html$/\.fr\.html/;
	   $info_fr =~ s/<\s*(([^><]*)(_|\.))?FR\s*>//gis;
# ATTENTION !!!!!
#Le if suivant corrige un bug connu, qui consiste a une mauvaise
#gestion des tags de langes imbriques <MP.EN> ... <MP.EN> ... </MP.EN> ... <MP.EN>
#
# il y est trois fois dans ce fichier
#
      if($option =~ /.*b.*/)
	   {
        while($info_fr =~ s/<\s*(([^><]*)(_|\.))?EN\s*>(.(?!<\s*(\1)?EN\s*>))*?<\s*\/(\1)?EN\s*>//is){}
       }
	   
	   
       $info_fr =~ s/<\s*(([^><]*)(_|\.))?EN\s*>(.*?)<\s*\/(\1)?EN\s*>//gis;
       $info_fr =~ s/(?:HREF|href)\s*=\s*"([^"]*?)\.\+/HREF="$1\.fr\.html/sg;
	   open (DEST_FR,">$dest_fr") or print "impossible de creer $dest_fr\n";
       print DEST_FR $info_fr;
       close (DEST_FR);
      }
     if($langue =~ /EN.*/ || $langue eq "BI")
      {
       $dest_en =~ s/\.html$/\.en\.html/;
# ATTENTION !!!!!
#Le if suivant corrige un bug connu, qui consiste a une mauvaise
#gestion des tags de langes imbriques <MP.EN> ... <MP.EN> ... </MP.EN> ... <MP.EN>
#
# il y est trois fois dans ce fichier
#
    
       if($option =~ /.*b.*/)
       {
	   while($info_en =~ s/<\s*(([^><]*)(_|\.))?FR\s*>(.(?!<\s*(\1)?FR\s*>))*?<\s*\/(\1)?FR\s*>//is){}
       }
       $info_en =~ s/<\s*(([^><]*)(_|\.))?FR\s*>(.*?)<\s*\/(\1)?FR\s*>//gis;
       $info_en =~ s/<\s*(([^><]*)(_|\.))?EN\s*>//gis;
       $info_en =~ s/(?:HREF|href)\s*=\s*"([^"]*?)\.\+/HREF="$1\.en\.html/sg;
       open (DEST_EN,">$dest_en") or print "impossible de creer $dest_en\n";
       print DEST_EN $info_en;
       close (DEST_EN);
      }
    }
#
# Un fichier *.SGML (nouveau format) ou *.HTML
# Creation du fichier multilingue correspondant
#
   else
    {
     $info =~ s/<([^><]*)\.$l>//isg;
#   print "+=+>$dest\n";
     local($i_mono) = 0;
     while($Les_Langues_Suf[$i_mono])
      {
# ATTENTION !!!!!
#Le if suivant corrige un bug connu, qui consiste a une mauvaise
#gestion des tags de langes imbriques <MP.EN> ... <MP.EN> ... </MP.EN> ... <MP.EN>
#
# il y est trois fois dans ce fichier
#
      if($option =~ /.*b.*/)
	   {
        while($info =~ s/<\s*(([^><]*)(_|\.))?$Les_Langues_Suf[$i_mono]\s*>(.(?!<\s*(\1)?$Les_Langues_Suf[$i_mono]\s*>))*?<\s*\/(\1)?$Les_Langues_Suf[$i_mono]\s*>//is){}
	   }
	   
       $info =~ s/<\s*(([^><]*)(_|\.))?$Les_Langues_Suf[$i_mono]\s*>(.*?)<\s*\/(\1)?$Les_Langues_Suf[$i_mono]\s*>//gis;
       $i_mono++;
  	 }
     $info =~ s/ HREF\s*=\s*"([^"]*?)\.\+/ HREF="$1\.$l\.html/sig;
     $info =~ s/<\s*.?MDP.*?>//sg;
     open (DEST,">$dest");
     print DEST $info;
     close (DEST);
    }
  }
}

return 1;
