<?php
/****************************************************************************************
SMI (Services Maintenance Interventions) est une gestion libre de maintenance et de SAV

Version 0.9.9

Copyright (C) 2006-2009  Sylvain FATOME
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.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program
(in the directory docs); 
if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 
Boston, MA  02110-1301, USA.

Contact : galawa@free.fr

Web : http://smitst.homelinux.com
****************************************************************************************/


// Vérification des tentatives de hack
$pos=strpos($_SERVER['PHP_SELF'],"inc.php");
if ($pos===FALSE)
	$ok_inc=TRUE;
else
	$ok_inc=FALSE;
if ($ok_inc==FALSE) header("Location: ../index.php");

/*****************************************************/
/* Fonctions d'extension de la classe FPDF           */
/*****************************************************/

function hex2dec($color = "#000000")
{
	$tbl_color = array();
	$tbl_color['R']=hexdec(substr($color, 1, 2));
	$tbl_color['G']=hexdec(substr($color, 3, 2));
	$tbl_color['B']=hexdec(substr($color, 5, 2));
	return $tbl_color;
}

function px2mm($px)
{
	return $px*25.4/72;
}

function txtentities($html)
{
	$trans = get_html_translation_table(HTML_ENTITIES);
	$trans = array_flip($trans);
	return strtr($html, $trans);
}

function ConvertSize($size=5,$maxsize=0)
{
// Depends of maxsize value to make % work properly. Usually maxsize == pagewidth
  //Identify size (remember: we are using 'mm' units here)
  if ( stristr($size,'px') ) $size *= 0.2645; //pixels
  elseif ( stristr($size,'cm') ) $size *= 10; //centimeters
  elseif ( stristr($size,'mm') ) $size += 0; //millimeters
  elseif ( stristr($size,'in') ) $size *= 25.4; //inches 
  elseif ( stristr($size,'pc') ) $size *= 38.1/9; //PostScript picas 
  elseif ( stristr($size,'pt') ) $size *= 25.4/72; //72dpi
  elseif ( stristr($size,'%') )
  {
	$size += 0; //make "90%" become simply "90" 
	$size *= $maxsize/100;
  }
  else $size *= 0.2645; //nothing == px
  
  return $size;
}

class PDF extends FPDF
{
	var $angle=0;
	var $theader;

	// Code-barre 39
	function Code39($xpos, $ypos, $code, $txt=FALSE, $baseline=0.5, $height=5)
	{
		$wide = $baseline;
		$narrow = $baseline / 3 ;
		$gap = $narrow;
	
		$barChar['0'] = 'nnnwwnwnn';
		$barChar['1'] = 'wnnwnnnnw';
		$barChar['2'] = 'nnwwnnnnw';
		$barChar['3'] = 'wnwwnnnnn';
		$barChar['4'] = 'nnnwwnnnw';
		$barChar['5'] = 'wnnwwnnnn';
		$barChar['6'] = 'nnwwwnnnn';
		$barChar['7'] = 'nnnwnnwnw';
		$barChar['8'] = 'wnnwnnwnn';
		$barChar['9'] = 'nnwwnnwnn';
		$barChar['A'] = 'wnnnnwnnw';
		$barChar['B'] = 'nnwnnwnnw';
		$barChar['C'] = 'wnwnnwnnn';
		$barChar['D'] = 'nnnnwwnnw';
		$barChar['E'] = 'wnnnwwnnn';
		$barChar['F'] = 'nnwnwwnnn';
		$barChar['G'] = 'nnnnnwwnw';
		$barChar['H'] = 'wnnnnwwnn';
		$barChar['I'] = 'nnwnnwwnn';
		$barChar['J'] = 'nnnnwwwnn';
		$barChar['K'] = 'wnnnnnnww';
		$barChar['L'] = 'nnwnnnnww';
		$barChar['M'] = 'wnwnnnnwn';
		$barChar['N'] = 'nnnnwnnww';
		$barChar['O'] = 'wnnnwnnwn';
		$barChar['P'] = 'nnwnwnnwn';
		$barChar['Q'] = 'nnnnnnwww';
		$barChar['R'] = 'wnnnnnwwn';
		$barChar['S'] = 'nnwnnnwwn';
		$barChar['T'] = 'nnnnwnwwn';
		$barChar['U'] = 'wwnnnnnnw';
		$barChar['V'] = 'nwwnnnnnw';
		$barChar['W'] = 'wwwnnnnnn';
		$barChar['X'] = 'nwnnwnnnw';
		$barChar['Y'] = 'wwnnwnnnn';
		$barChar['Z'] = 'nwwnwnnnn';
		$barChar['-'] = 'nwnnnnwnw';
		$barChar['.'] = 'wwnnnnwnn';
		$barChar[' '] = 'nwwnnnwnn';
		$barChar['*'] = 'nwnnwnwnn';
		$barChar['$'] = 'nwnwnwnnn';
		$barChar['/'] = 'nwnwnnnwn';
		$barChar['+'] = 'nwnnnwnwn';
		$barChar['%'] = 'nnnwnwnwn';
		
		if ($txt==TRUE)
		{
			$this->SetFont('Arial','',10);
			$this->Text($xpos, $ypos + $height + 4, $code);
		}
		$this->SetFillColor(0);
	
		$code = '*'.strtoupper($code).'*';
		for($i=0; $i<strlen($code); $i++){
			$char = $code{$i};
			if(!isset($barChar[$char])){
				$this->Error('Invalid character in barcode: '.$char);
			}
			$seq = $barChar[$char];
			for($bar=0; $bar<9; $bar++){
				if($seq{$bar} == 'n'){
					$lineWidth = $narrow;
				}else{
					$lineWidth = $wide;
				}
				if($bar % 2 == 0){
					$this->Rect($xpos, $ypos, $lineWidth, $height, 'F');
				}
				$xpos += $lineWidth;
			}
			$xpos += $gap;
		}
	}
	
	// Ligne horizontale pointillée
	// ltiret : longueur des tirets
	// lblanc : longueur des blancs
	function LineHP($xpos1,$xpos2,$ypos,$ltiret,$lblanc)
    {
        $longueur=abs($x1-$x2);
		// Nb de tirets à dessiner
		$ntirets=intval($longueur/($ltiret-$lblanc)); 
		// Longueur tiret et espace
		$ltotale=$ltiret+$lblanc;
		
        for($i=$xpos1;($i+$ltiret)<=$xpos2;$i+=$ltotale)
		{
			$this->Line($i,$ypos,$i+$ltiret,$ypos);
        }
    }
	
	// Type de génération
	function settgen()
	{
		$type=0;
		if (isset($_GET["timp"]))
			$type=intval($_GET["timp"]);
		$this->tgen=$type;
		$type="cop";
		if (isset($_GET["tact"]))
			$type=trim($_GET["tact"]);
		$this->tact=$type;
	}
	
	// Type de header
	function settheader($type)
	{
		$this->theader=$type;
	}
	
	//En-tête
	function Header()
	{
		switch ($this->theader)
		{
			// Entête dossiers
			case "dos" :
				global
					$niv_util,
					$dos_code,
					$dos_codeage,
					$dos_dateddef,
					$dos_datefinpf,
					$dos_datefinf,
					$dos_codedosc,
					$dos_codedoss,
					$cheminr_logos,
					$pv_ent_age,
					$pv_ent_int,
					$age_adr1,
					$age_adr2,
					$age_ville,
					$age_telf,
					$age_fax,
					$age_txtfax,
					$age_web,
					$age_email,
					$age_heures,
					$age_txtent,
					$cp_age,
					$ville_age;

				$pv_ent_age = 25; // Valeur de départ (mm) du pointeur pour l'affichage agence par rapport au bord haut de la feuille
								  // Cette valeur comprend la hauteur du logo (20 mm)
		
				$pv_ent_dos = 10; // Valeur de départ (mm) du pointeur pour l'affichage de l'entête dossier par rapport au bord haut de la feuille

				// On sauve la couleur en cours et on se met en noir
				$ex_couleurtxt = $this->TextColor;
				$this->SetTextColor(0);

				// On sauve la marge en cours et on se met à 10
				$ex_lMargin = $this->lMargin;
				$this->SetLeftMargin(10);

				// Logo Agence
				$this->Image($cheminr_logos."/log".strtolower($dos_codeage).".png",10,10,0,17); // Image à 10mm du bord gauche, 10mm du bord haut, hauteur maximum 17mm

				// Entête Agence
				
					// N° de Siret
					$this->SetY($pv_ent_age);
					$this->SetFont('Arial','I',6);
					$this->Cell(95,3,$age_rcs,0,0,'L');
	
					// Coordonnées
					$ent_age = $age_adr1."\n";
					if ($age_adr2 <> "")
						$ent_age.= $age_adr2."\n";
					$ent_age.= $cp_age." ".$ville_age."\n";
					$ent_age.= "Tel : ";
					$ent_age.=$age_telf;
					if ($age_txttelf <> "")
						$ent_age.= " (".$age_txttelf.")\n";
					else
						$ent_age.= "\n";
					$ent_age.="Fax : ";
					$ent_age.= $age_fax;
					if ($age_txtfax <> "")
						$ent_age.= " (".$age_txtfax.")\n";
					else
						$ent_age.= "\n";
	
					$pv_ent_age = $pv_ent_age + 3;
					$this->SetY($pv_ent_age);
					$this->SetFont('Arial','',8);
					$this->MultiCell(95,3,$ent_age,0,'L');
	
					// Textes complémentaires
					$ent_age = "";
					if ($age_web <> "")
					{
						$ent_age = "Site Web : ";
						$ent_age.= $age_web." / ";
					}
					$ent_age.= "Email : ";
					$ent_age.= $age_email."\n";
					$ent_age.= "Horaires : ";
					$ent_age.= $age_heures."\n";
					$ent_age.= formatetxt($age_txtent);
					$this->SetFont('Arial','I',6); // Pas besoin de SetY car le MultiCell renvoie juste en dessous
					$this->MultiCell(95,3,$ent_age,0,'L');
					$pv_ent_age = $this->GetY(); // Récupération de la position du pointeur
							
				// Entête Dossier
				
				$this->SetY($pv_ent_dos);
				$this->Cell(95);
				$this->SetFont('Arial','BU',14);
				$this->Cell(95,10,'SYNTHESE DOSSIER',0,1,'C');
				$ent_dos = 	"N°".$dos_code."\n";
				$ent_dos.= 	"\n\n";
				$ent_dos.= 	"Date création : ";
				$ent_dos.= $dos_dateddef;
				$pv_ent_dos = $pv_ent_dos + 10;
				$this->SetY($pv_ent_dos);
				$this->Cell(95);
				$this->SetFont('Arial','',10);
				$this->MultiCell(95,5,$ent_dos,0,'C');
				// Code-barre
				$posx_cb=95+((95-(px2mm((strlen($dos_code)+2)*10)))/2);
				$this->Code39($posx_cb,26,$dos_code,FALSE,1,5);
				
				if ($dos_datefinf <> "")  // Affichage si intervention close
				{
					$this->SetY($pv_ent_age - 13);
					$this->Cell(95);
					$this->SetTextColor(200);
					$this->SetFont('Arial','B',14);
					$this->Cell(95,20,'CLOS',0,1,'C');
					$this->SetTextColor(0);
				}
	
				$this->SetDrawColor(125);
				$this->SetLineWidth(0.4);
				$this->Line(10,$pv_ent_age,200,$pv_ent_age);
				$this->SetDrawColor(0);
				$this->SetLineWidth(0.2);

				$pv_ent_age++;
				$this->SetY($pv_ent_age); // Renvoie le pointeur SOUS l'entête agence

				// On restaure la couleur
				$this->SetTextColor($ex_couleurtxt);

				// On restaure la marge
				$this->SetLeftMargin($ex_lMargin);
				break;

			// Entête interventions
			case "int" :
				global
					$niv_util,
					$int_code,
					$int_codeage,
					$int_codedo,
					$int_dateddef,
					$int_daterdvf,
					$int_datehrdv,
					$int_dateprevf,
					$int_datefinf,
					$int_codestatut,
					$int_codelieu,
					$int_codeman,
					$cheminr_logos,
					$pv_ent_age,
					$pv_ent_int,
					$age_adr1,
					$age_adr2,
					$age_ville,
					$age_telf,
					$age_fax,
					$age_txtfax,
					$age_web,
					$age_email,
					$age_heures,
					$age_txtent,
					$cp_age,
					$ville_age,
					$cge_adr1,
					$cge_adr2,
					$cge_ville,
					$cge_telf,
					$cge_fax,
					$cge_web,
					$cge_email,
					$cge_heures,
					$cge_txtent,
					$cp_cge,
					$ville_cge,
					$do_adr1,
					$do_adr2,
					$do_ville,
					$do_telf,
					$do_fax,
					$do_txtfax,
					$do_web,
					$do_email,
					$do_heures,
					$do_txtent,
					$cp_do,
					$ville_do;

				$pv_ent_age = 25; // Valeur de départ (mm) du pointeur pour l'affichage agence par rapport au bord haut de la feuille
								  // Cette valeur comprend la hauteur du logo (20 mm)
		
				$pv_ent_int = 10; // Valeur de départ (mm) du pointeur pour l'affichage de l'entête intervention par rapport au bord haut de la feuille

				// On sauve la couleur en cours et on se met en noir
				$ex_couleurtxt = $this->TextColor;
				$this->SetTextColor(0);

				// On sauve la marge en cours et on se met à 10
				$ex_lMargin = $this->lMargin;
				$this->SetLeftMargin(10);

				// Si pas de donneur d'ordre, entête "classique"
				// Ou si pour sous-traitant
				if ($int_codedo=="")
				{
					// Logo Agence
					if ($int_codeage<>"")
					{
						$this->Image($cheminr_logos."/log".strtolower($int_codeage).".png",10,10,0,17); // Image à 10mm du bord gauche, 10mm du bord haut, hauteur maximum 17mm
						// Entête Agence
						
							// N° de Siret
							$this->SetY($pv_ent_age);
							$this->SetFont('Arial','I',6);
							$this->Cell(95,3,$age_rcs,0,0,'L');
			
							// Coordonnées
							$ent_age = $age_adr1."\n";
							if ($age_adr2 <> "")
								$ent_age.= $age_adr2."\n";
							$ent_age.= $cp_age." ".$ville_age."\n";
							$ent_age.= "Tel : ";
							$ent_age.=$age_telf;
							if ($age_txttelf <> "")
								$ent_age.= " (".$age_txttelf.")\n";
							else
								$ent_age.= "\n";
							$ent_age.="Fax : ";
							$ent_age.= $age_fax;
							if ($age_txtfax <> "")
								$ent_age.= " (".$age_txtfax.")\n";
							else
								$ent_age.= "\n";
			
							$pv_ent_age = $pv_ent_age + 3;
							$this->SetY($pv_ent_age);
							$this->SetFont('Arial','',8);
							$this->MultiCell(95,3,$ent_age,0,'L');
			
							// Textes complémentaires
							$ent_age = "";
							if ($age_web <> "")
							{
								$ent_age = "Site Web : ";
								$ent_age.= $age_web." / ";
							}
							$ent_age.= "Email : ";
							$ent_age.= $age_email."\n";
							$ent_age.= "Horaires : ";
							$ent_age.= $age_heures."\n";
							$ent_age.= formatetxt($age_txtent);
					}
					else
					{
						$this->Image($cheminr_logos."/logcge.png",10,10,0,17); // Image à 10mm du bord gauche, 10mm du bord haut, hauteur maximum 17mm

						// Entête Agence
						
							// N° de Siret
							$this->SetY($pv_ent_age);
							$this->SetFont('Arial','I',6);
							$this->Cell(95,3,$cge_rcs,0,0,'L');
			
							// Coordonnées
							$ent_age = $cge_adr1."\n";
							if ($cge_adr2 <> "")
								$ent_age.= $cge_adr2."\n";
							$ent_age.= $cp_cge." ".$ville_cge."\n";
							$ent_age.= "Tel : ";
							$ent_age.=$cge_telf;
							$ent_age.= "\n";
							$ent_age.="Fax : ";
							$ent_age.= $cge_fax;
							if ($cge_txtfax <> "")
								$ent_age.= " (".$cge_txtfax.")\n";
							else
								$ent_age.= "\n";
			
							$pv_ent_age = $pv_ent_age + 3;
							$this->SetY($pv_ent_age);
							$this->SetFont('Arial','',8);
							$this->MultiCell(95,3,$ent_age,0,'L');
			
							// Textes complémentaires
							$ent_age = "";
							$ent_age.= "Email : ";
							$ent_age.= $cge_email."\n";
							$ent_age.= "\n\n";
					}
					$this->SetFont('Arial','I',6); // Pas besoin de SetY car le MultiCell renvoie juste en dessous
					$this->MultiCell(95,3,$ent_age,0,'L');
					$pv_ent_age = $this->GetY(); // Récupération de la position du pointeur
				}
				else
				{
					// Logo donneur d'ordres
					$this->Image($cheminr_logos."/log".strtolower($int_codedo).".png",10,10,0,17); // Image à 10mm du bord gauche, 10mm du bord haut, hauteur maximum 17mm

					// Entête Donneur d'Ordres
					
						// N° de Siret
						$this->SetY($pv_ent_age);
						$this->SetFont('Arial','I',6);
						$this->Cell(95,3,$do_rcs,0,0,'L');
		
						// Coordonnées
						$ent_age = $do_adr1."\n";
						if ($do_adr2 <> "")
							$ent_age.= $do_adr2."\n";
						$ent_age.= $cp_do." ".$ville_do."\n";
						$ent_age.= "Tel : ";
						$ent_age.=$do_telf;
						if ($do_txttelf <> "")
							$ent_age.= " (".$do_txttelf.")\n";
						else
							$ent_age.= "\n";
						$ent_age.="Fax : ";
						$ent_age.= $do_fax;
						if ($do_txtfax <> "")
							$ent_age.= " (".$do_txtfax.")\n";
						else
							$ent_age.= "\n";
		
						$pv_ent_age = $pv_ent_age + 3;
						$this->SetY($pv_ent_age);
						$this->SetFont('Arial','',8);
						$this->MultiCell(95,3,$ent_age,0,'L');
		
						// Textes complémentaires
						$ent_age = "";
						if ($do_web <> "")
						{
							$ent_age = "Site Web : ";
							$ent_age.= $do_web." / ";
						}
						$ent_age.= "Email : ";
						$ent_age.= $do_email."\n";
						$ent_age.= "Horaires : ";
						$ent_age.= $do_heures."\n";
						$ent_age.= formatetxt($do_txtent);
						$this->SetFont('Arial','I',6); // Pas besoin de SetY car le MultiCell renvoie juste en dessous
						$this->MultiCell(95,3,$ent_age,0,'L');
						$pv_ent_age = $this->GetY(); // Récupération de la position du pointeur
				}
							
				// Entête Intervention
				
				$this->SetY($pv_ent_int);
				$this->Cell(95);
				$this->SetFont('Arial','BU',14);
				if (($int_codestatut == "ACC") AND ($int_codelieu == "SITE")) // On attend une commande client pour intervention sur site
				{
					$this->Cell(95,10,'COMMANDE CLIENT',0,1,'C');
				}
				else
				{
					$this->Cell(95,10,'FICHE INTERVENTION',0,1,'C');
					if ($int_code<>"")
					{
						$ent_int = 	"N°".$int_code."\n";
						$ent_int.= 	"\n\n";
						$ent_int.= 	"Date création : ";
						$ent_int.= $int_dateddef;
						$pv_ent_int = $pv_ent_int + 10;
						$this->SetY($pv_ent_int);
						$this->Cell(95);
						$this->SetFont('Arial','B',10);
						$this->MultiCell(95,5,$ent_int,0,'C');
						// Code-barre
						$posx_cb=95+((95-(px2mm((strlen($int_code)+2)*10)))/2);
						$this->Code39($posx_cb,$pv_ent_int+4,$int_code,FALSE,1,5);
						// Code saisie manuelle
						if (trim($int_codeman)<>"")
						{
							$this->SetY($pv_ent_int+10);
							$this->Cell(95);
							$this->SetFont('Arial','I',7);
							$this->MultiCell(95,5,$int_codeman,0,'C');
						}
					}
					else
					{
						$ent_int = 	"SAISIE MANUELLE\n";
						$ent_int.= 	"A REGULARISER\n\n";
						$ent_int.= 	"Date création : ____/____/________";
						$pv_ent_int = $pv_ent_int + 10;
						$this->SetY($pv_ent_int);
						$this->Cell(95);
						$this->SetFont('Arial','B',10);
						$this->MultiCell(95,5,$ent_int,0,'C');
					}
				}
				
				if ($int_datefinf <> "")  // Affichage si intervention close
				{
					$this->SetY($pv_ent_age - 13);
					$this->Cell(95);
					$this->SetTextColor(200);
					$this->SetFont('Arial','B',14);
					$this->Cell(95,20,'TERMINEE',0,1,'C');
					$this->SetTextColor(0);
				}
	
				$this->SetY($pv_ent_age - 5); // Affichage du type d'état
				$this->Cell(95);
				$this->SetFont('Arial','I',8);
				if (($int_codestatut == "ACC") AND ($int_codelieu == "SITE")) // On attend une commande client pour intervention sur site
				{
					$this->Cell(95,5,'Demande d\'intervention',0,1,'R');
				}
				else  
				// Le client a déjà donné son accord
				{ 
					if ($int_dateprevf == "")
						$this->Cell(95,5,'Fiche de travail',0,1,'R');
					else
						$this->Cell(95,5,'Rapport de travail',0,1,'R');
				}

				$this->SetDrawColor(125);
				$this->SetLineWidth(0.4);
				$this->Line(10,$pv_ent_age,200,$pv_ent_age);
				$this->SetDrawColor(0);
				$this->SetLineWidth(0.2);

				// Duplicata pour les clients (pas de réimpression d'original pour le client !)
				if (($niv_util == 1) OR ($this->tgen == 1))
					$this->fond("DUPLICATA");
		
				$pv_ent_age++;
				$this->SetY($pv_ent_age); // Renvoie le pointeur SOUS l'entête agence

				// On restaure la couleur
				$this->SetTextColor($ex_couleurtxt);

				// On restaure la marge
				$this->SetLeftMargin($ex_lMargin);
				break;

			// Entête Contrats locations
			case "col" :
				global
					$niv_util,
					$coloc_code,
					$coloc_codeage,
					$coloc_datecreaf,
					$coloc_datefinf,
					$coloc_dateclosf,
					$cheminr_logos,
					$pv_ent_age,
					$pv_ent_int,
					$age_adr1,
					$age_adr2,
					$age_ville,
					$age_telf,
					$age_fax,
					$age_txtfax,
					$age_web,
					$age_email,
					$age_heures,
					$age_txtent,
					$cp_age,
					$ville_age;

				$pv_ent_age = 25; // Valeur de départ (mm) du pointeur pour l'affichage agence par rapport au bord haut de la feuille
								  // Cette valeur comprend la hauteur du logo (20 mm)
		
				$pv_ent_loc = 10; // Valeur de départ (mm) du pointeur pour l'affichage de l'entête intervention par rapport au bord haut de la feuille

				// On sauve la couleur en cours et on se met en noir
				$ex_couleurtxt = $this->TextColor;
				$this->SetTextColor(0);

				// On sauve la marge en cours et on se met à 10
				$ex_lMargin = $this->lMargin;
				$this->SetLeftMargin(10);

				// Logo Agence
				$this->Image($cheminr_logos."/log".strtolower($coloc_codeage).".png",10,10,0,17); // Image à 10mm du bord gauche, 10mm du bord haut, hauteur maximum 17mm

				// Entête Agence
				
					// N° de Siret
					$this->SetY($pv_ent_age);
					$this->SetFont('Arial','I',6);
					$this->Cell(95,3,$age_rcs,0,0,'L');
	
					// Coordonnées
					$ent_age = $age_adr1."\n";
					if ($age_adr2 <> "")
						$ent_age.= $age_adr2."\n";
					$ent_age.= $cp_age." ".$ville_age."\n";
					$ent_age.= "Tel : ";
					$ent_age.=$age_telf;
					if ($age_txttelf <> "")
						$ent_age.= " (".$age_txttelf.")\n";
					else
						$ent_age.= "\n";
					$ent_age.="Fax : ";
					$ent_age.= $age_fax;
					if ($age_txtfax <> "")
						$ent_age.= " (".$age_txtfax.")\n";
					else
						$ent_age.= "\n";
	
					$pv_ent_age = $pv_ent_age + 3;
					$this->SetY($pv_ent_age);
					$this->SetFont('Arial','',8);
					$this->MultiCell(95,3,$ent_age,0,'L');
	
					// Textes complémentaires
					$ent_age = "";
					if ($age_web <> "")
					{
						$ent_age = "Site Web : ";
						$ent_age.= $age_web." / ";
					}
					$ent_age.= "Email : ";
					$ent_age.= $age_email."\n";
					$ent_age.= "Horaires : ";
					$ent_age.= $age_heures."\n";
					$ent_age.= formatetxt($age_txtent);
					$this->SetFont('Arial','I',6); // Pas besoin de SetY car le MultiCell renvoie juste en dessous
					$this->MultiCell(95,3,$ent_age,0,'L');
					$pv_ent_age = $this->GetY(); // Récupération de la position du pointeur

				// Entête Contrat location
				
				$this->SetY($pv_ent_loc);
				$this->Cell(95);
				$this->SetFont('Arial','BU',14);
				$this->Cell(95,10,'CONTRAT LOCATION',0,1,'C');
				$ent_loc = 	"N°".$coloc_code."\n";
				$ent_loc.= 	"\n\n";
				$ent_loc.= 	"Date création : ";
				$ent_loc.= $coloc_datecreaf;
				$pv_ent_loc = $pv_ent_loc + 10;
				$this->SetY($pv_ent_loc);
				$this->Cell(95);
				$this->SetFont('Arial','',10);
				$this->MultiCell(95,5,$ent_loc,0,'C');
				// Code-barre
				$posx_cb=95+((95-(px2mm((strlen($coloc_code)+2)*10)))/2);
				$this->Code39($posx_cb,26,$coloc_code,FALSE,1,5);
				
				if ($coloc_dateclosf <> "")  // Affichage si contrat clot
				{
					$this->SetY($pv_ent_age - 13);
					$this->Cell(95);
					$this->SetTextColor(200);
					$this->SetFont('Arial','B',14);
					$this->Cell(95,20,'TERMINE',0,1,'C');
					$this->SetTextColor(0);
				}
	
				$this->SetDrawColor(125);
				$this->SetLineWidth(0.4);
				$this->Line(10,$pv_ent_age,200,$pv_ent_age);
				$this->SetDrawColor(0);
				$this->SetLineWidth(0.2);

				// Duplicata pour les clients (pas de réimpression d'original pour le client !)
				if ($niv_util == 1)
					$this->fond("DUPLICATA");
		
				$pv_ent_age++;
				$this->SetY($pv_ent_age); // Renvoie le pointeur SOUS l'entête agence

				// On restaure la couleur
				$this->SetTextColor($ex_couleurtxt);

				// On restaure la marge
				$this->SetLeftMargin($ex_lMargin);
				break;

			// Entête Départs/Retours de locations
			case "dr" :
				global
					$niv_util,
					$pdtloc_des,
					$pdtloc_ns,
					$pdtl_datedep,
					$pdtl_dateret,
					$coloc_codeage,
					$coloc_datecreaf,
					$coloc_datefinf,
					$coloc_dateclosf,
					$cheminr_logos,
					$pv_ent_age,
					$pv_ent_int,
					$age_adr1,
					$age_adr2,
					$age_ville,
					$age_telf,
					$age_fax,
					$age_txtfax,
					$age_web,
					$age_email,
					$age_heures,
					$age_txtent,
					$cp_age,
					$ville_age;

				$pv_ent_age = 25; // Valeur de départ (mm) du pointeur pour l'affichage agence par rapport au bord haut de la feuille
								  // Cette valeur comprend la hauteur du logo (20 mm)
		
				$pv_ent_loc = 10; // Valeur de départ (mm) du pointeur pour l'affichage de l'entête intervention par rapport au bord haut de la feuille

				// On sauve la couleur en cours et on se met en noir
				$ex_couleurtxt = $this->TextColor;
				$this->SetTextColor(0);

				// On sauve la marge en cours et on se met à 10
				$ex_lMargin = $this->lMargin;
				$this->SetLeftMargin(10);

				// Logo Agence
				$this->Image($cheminr_logos."/log".strtolower($coloc_codeage).".png",10,10,0,17); // Image à 10mm du bord gauche, 10mm du bord haut, hauteur maximum 17mm

				// Entête Agence
				
					// N° de Siret
					$this->SetY($pv_ent_age);
					$this->SetFont('Arial','I',6);
					$this->Cell(95,3,$age_rcs,0,0,'L');
	
					// Coordonnées
					$ent_age = $age_adr1."\n";
					if ($age_adr2 <> "")
						$ent_age.= $age_adr2."\n";
					$ent_age.= $cp_age." ".$ville_age."\n";
					$ent_age.= "Tel : ";
					$ent_age.=$age_telf;
					if ($age_txttelf <> "")
						$ent_age.= " (".$age_txttelf.")\n";
					else
						$ent_age.= "\n";
					$ent_age.="Fax : ";
					$ent_age.= $age_fax;
					if ($age_txtfax <> "")
						$ent_age.= " (".$age_txtfax.")\n";
					else
						$ent_age.= "\n";
	
					$pv_ent_age = $pv_ent_age + 3;
					$this->SetY($pv_ent_age);
					$this->SetFont('Arial','',8);
					$this->MultiCell(95,3,$ent_age,0,'L');
	
					// Textes complémentaires
					$ent_age = "";
					if ($age_web <> "")
					{
						$ent_age = "Site Web : ";
						$ent_age.= $age_web." / ";
					}
					$ent_age.= "Email : ";
					$ent_age.= $age_email."\n";
					$ent_age.= "Horaires : ";
					$ent_age.= $age_heures."\n";
					$ent_age.= formatetxt($age_txtent);
					$this->SetFont('Arial','I',6); // Pas besoin de SetY car le MultiCell renvoie juste en dessous
					$this->MultiCell(95,3,$ent_age,0,'L');
					$pv_ent_age = $this->GetY(); // Récupération de la position du pointeur

				// Entête départ/retour location
				
				$this->SetY($pv_ent_loc);
				$this->Cell(95);
				$this->SetFont('Arial','BU',14);
				$this->Cell(95,10,'DEPART/RETOUR LOCATION',0,1,'C');
				$ent_loc = 	$pdtloc_des."\n";
				$ent_loc.= 	"\n";
				$pv_ent_loc = $pv_ent_loc + 10;
				$this->SetY($pv_ent_loc);
				$this->Cell(95);
				$this->SetFont('Arial','',10);
				$this->MultiCell(95,5,$ent_loc,0,'C');
				// Code-barre
				$posx_cb=95+((95-(px2mm((strlen($pdtloc_ns)+2)*10)))/2);
				$this->Code39($posx_cb,26,$pdtloc_ns,FALSE,1,5);
				// $this->Ln(3);
				// Numéro de série
				$this->SetFont('Arial','I',6);
				$this->Cell(95);
				$this->Cell(95,5,'N/S '.$pdtloc_ns,'',1,'C');
				
				if (formatedate($pdtl_dateret) <> "")  // Affichage si produit rendu
				{
					$this->SetY($pv_ent_age - 13);
					$this->Cell(95);
					$this->SetTextColor(200);
					$this->SetFont('Arial','B',14);
					$this->Cell(95,20,'PRODUIT RENDU',0,1,'C');
					$this->SetTextColor(0);
				}
	
				$this->SetDrawColor(125);
				$this->SetLineWidth(0.4);
				$this->Line(10,$pv_ent_age,200,$pv_ent_age);
				$this->SetDrawColor(0);
				$this->SetLineWidth(0.2);

				// Duplicata pour les clients (pas de réimpression d'original pour le client !)
				if ($niv_util == 1)
					$this->fond("DUPLICATA");
		
				$pv_ent_age++;
				$this->SetY($pv_ent_age); // Renvoie le pointeur SOUS l'entête agence

				// On restaure la couleur
				$this->SetTextColor($ex_couleurtxt);

				// On restaure la marge
				$this->SetLeftMargin($ex_lMargin);
				break;

			// Entête ordres de travail
			case "ot" :
				global
					$niv_util,
					$age_code,
					$ot_code,
					$ot_dateddef,
					$ot_daterdvf,
					$ot_datehrdv,
					$ot_dateprevf,
					$ot_datefinf,
					$ot_codestatut,
					$ot_codelieu,
					$cheminr_logos,
					$pv_ent_age,
					$pv_ent_ot,
					$age_adr1,
					$age_adr2,
					$age_ville,
					$age_telf,
					$age_fax,
					$age_txtfax,
					$age_web,
					$age_email,
					$age_heures,
					$age_txtent,
					$cp_age,
					$ville_age;

				$pv_ent_age = 30; // Valeur de départ (mm) du pointeur pour l'affichage agence par rapport au bord haut de la feuille
								  // Cette valeur comprend la hauteur du logo (20 mm)
		
				$pv_ent_ot = 10; // Valeur de départ (mm) du pointeur pour l'affichage de l'entête intervention par rapport au bord haut de la feuille

				// On sauve la couleur en cours et on se met en noir
				$ex_couleurtxt = $this->TextColor;
				$this->SetTextColor(0);

				// On sauve la marge en cours et on se met à 10
				$ex_lMargin = $this->lMargin;
				$this->SetLeftMargin(10);
	
				// Logo Agence
				$this->Image($cheminr_logos."/log".strtolower($age_code).".png",10,10,0,17); // Image à 10mm du bord gauche, 10mm du bord haut, hauteur maximum 17mm

				// Entête Agence
				
				// N° de Siret
				$this->SetY($pv_ent_age);
				$this->SetFont('Arial','I',6);
				$this->Cell(95,3,$age_rcs,0,0,'L');

				// Coordonnées
				$ent_age = $age_adr1."\n";
				if ($age_adr2 <> "")
					$ent_age.= $age_adr2."\n";
				$ent_age.= $cp_age." ".$ville_age."\n";
				$ent_age.= "Tel : ";
				$ent_age.=$age_telf;
				if ($age_txttelf <> "")
					$ent_age.= " (".$age_txttelf.")\n";
				else
					$ent_age.= "\n";
				$ent_age.="Fax : ";
				$ent_age.= $age_fax;
				if ($age_txtfax <> "")
					$ent_age.= " (".$age_txtfax.")\n";
				else
					$ent_age.= "\n";

				$pv_ent_age = $pv_ent_age + 3;
				$this->SetY($pv_ent_age);
				$this->SetFont('Arial','',8);
				$this->MultiCell(95,3,$ent_age,0,'L');

				// Textes complémentaires
				$ent_age = "";
				if ($age_web <> "")
				{
					$ent_age = "Site Web : ";
					$ent_age.= $age_web." / ";
				}
				$ent_age.= "Email : ";
				$ent_age.= $age_email."\n";
				$ent_age.= "Horaires : ";
				$ent_age.= $age_heures."\n";
				$ent_age.= formatetxt($age_txtent);
				$this->SetFont('Arial','I',6); // Pas besoin de SetY car le MultiCell renvoie juste en dessous
				$this->MultiCell(95,3,$ent_age,0,'L');
				$pv_ent_age = $this->GetY(); // Récupération de la position du pointeur
							
				// Entête Ordre
				$this->SetY($pv_ent_ot);
				$this->Cell(95);
				$this->SetFont('Arial','BU',14);
				$this->Cell(95,10,'BON DE TRAVAIL',0,1,'C');
				$ent_ot ="N°".$ot_code."\n";
				$ent_ot.="\n\n";
				$ent_ot.="Date demande : ";
				$ent_ot.= $ot_dateddef;
				$pv_ent_ot = $pv_ent_ot + 10;
				$this->SetY($pv_ent_ot);
				$this->Cell(95);
				$this->SetFont('Arial','',10);
				$this->MultiCell(95,5,$ent_ot,0,'C');
				// Code-barre
				$posx_cb=95+((95-(px2mm((strlen($ot_code)+2)*10)))/2);
				$this->Code39($posx_cb,26,$ot_code,FALSE,1,5);
				
				if ($ot_datefinf <> "")  // Affichage si ordre clôt
				{
					$this->SetY($pv_ent_age - 13);
					$this->Cell(95);
					$this->SetTextColor(200);
					$this->SetFont('Arial','B',14);
					$this->Cell(95,20,'TERMINE',0,1,'C');
					$this->SetTextColor(0);
				}
	
				$this->SetY($pv_ent_age - 5); // Affichage du type d'état
				$this->Cell(95);
				$this->SetFont('Arial','I',8);
				if ($ot_dateprevf == "")
					$this->Cell(95,5,'Fiche de travail',0,1,'R');
				else
					$this->Cell(95,5,'Rapport de travail',0,1,'R');

				$this->SetDrawColor(125);
				$this->SetLineWidth(0.4);
				$this->Line(10,$pv_ent_age,200,$pv_ent_age);
				$this->SetDrawColor(0);
				$this->SetLineWidth(0.2);

				// Duplicata pour les donneurs d'ordres (pas de réimpression d'original pour le client !)
				if (($niv_util == 11) OR ($niv_util == 10))
					$this->fond("DUPLICATA");
		
				$pv_ent_age++;
				$this->SetY($pv_ent_age); // Renvoie le pointeur SOUS l'entête agence

				// On restaure la couleur
				$this->SetTextColor($ex_couleurtxt);

				// On restaure la marge
				$this->SetLeftMargin($ex_lMargin);
				break;

			// Entête contrats clients
			case "cocl" :
				global
					$cocl_code,
					$cocl_codeage,
					$cocl_datecreaf,
					$cocl_datesigf,
					$cocl_datefinf,
					$cheminr_logos,
					$pv_ent_age,
					$pv_ent_cocl;
		
	
				$pv_ent_age = 30; // Valeur de départ (mm) du pointeur pour l'affichage agence par rapport au bord haut de la feuille
								  // Cette valeur comprend la hauteur du logo (20 mm)
		
				$pv_ent_cocl = 10; // Valeur de départ (mm) du pointeur pour l'affichage de l'entête intervention par rapport au bord haut de la feuille
	
				// On sauve la couleur en cours et on se met en noir
				$ex_couleurtxt = $this->TextColor;
				$this->SetTextColor(0);

				// On sauve la marge en cours et on se met à 10
				$ex_lMargin = $this->lMargin;
				$this->SetLeftMargin(10);
	
				// Logo Agence
				$this->Image($cheminr_logos."/log".strtolower($cocl_codeage).".png",10,10,0,17); // Image à 10mm du bord gauche, 10mm du bord haut, hauteur maximum 17mm
	
				$row = lit_enr_age($cocl_codeage,TRUE);
				extract ($row);
							
				// Entête Agence
				
					// N° de Siret
					$this->SetY($pv_ent_age);
					$this->SetFont('Arial','I',6);
					$this->Cell(95,3,$age_rcs,0,0,'L');
	
					// Coordonnées
					$ent_age = $age_adr1."\n";
					if ($age_adr2 <> "")
						$ent_age.= $age_adr2."\n";
					$ent_age.= Retournecp_openId($age_ville,TRUE)." ".Retourneville_openId($age_ville,TRUE)."\n";
					$ent_age.= "Tel : ";
					$ent_age.=$age_telf;
					if ($age_txttelf <> "")
						$ent_age.= " (".$age_txttelf.")\n";
					else
						$ent_age.= "\n";
					$ent_age.="Fax : ";
					$ent_age.= $age_fax;
					if ($age_txtfax <> "")
						$ent_age.= " (".$age_txtfax.")\n";
					else
						$ent_age.= "\n";
	
					$pv_ent_age = $pv_ent_age + 3;
					$this->SetY($pv_ent_age);
					$this->SetFont('Arial','',8);
					$this->MultiCell(95,3,$ent_age,0,'L');
	
					// Textes complémentaires
					$ent_age = "";
					if ($age_web <> "")
					{
						$ent_age = "Site Web : ";
						$ent_age.= $age_web." / ";
					}
					$ent_age.= "Email : ";
					$ent_age.= $age_email."\n";
					$ent_age.= "Horaires : ";
					$ent_age.= $age_heures."\n";
					$ent_age.= formatetxt($age_txtent);
					$this->SetFont('Arial','I',6); // Pas besoin de SetY car le MultiCell renvoie juste en dessous
					$this->MultiCell(95,3,$ent_age,0,'L');
					$pv_ent_age = $this->GetY(); // Récupération de la position du pointeur
	
				// Entête Contrat
				
				$this->SetY($pv_ent_cocl);
				$this->Cell(95);
				$this->SetFont('Arial','BU',14);
				$this->Cell(95,10,'CONTRAT',0,1,'C');
				$ent_cocl = "N°".$cocl_code."\n";
				$ent_cocl.= "\n\n";
				$ent_cocl.= "Date création : ";
				$ent_cocl.= $cocl_datecreaf;
				$pv_ent_cocl = $pv_ent_cocl + 10;
				$this->SetY($pv_ent_cocl);
				$this->Cell(95);
				$this->SetFont('Arial','',10);
				$this->MultiCell(95,5,$ent_cocl,0,'C');
				// Code-barre
				$posx_cb=95+((95-(px2mm((strlen($cocl_code)+2)*10)))/2);
				$this->Code39($posx_cb,26,$cocl_code,FALSE,1,5);
				
				if ($cocl_datefinf <> "")  // Affichage si contrat clot
				{
					$this->SetY($pv_ent_age - 13);
					$this->Cell(95);
					$this->SetTextColor(200);
					$this->SetFont('Arial','B',14);
					$this->Cell(95,20,'TERMINE',0,1,'C');
					$this->SetTextColor(0);
				}
	
	
				$this->SetDrawColor(125);
				$this->SetLineWidth(0.4);
				$this->Line(10,$pv_ent_age,200,$pv_ent_age);
				$this->SetDrawColor(0);
				$this->SetLineWidth(0.2);
	
				// "Duplicata" si signé (pas de réimpression d'original pour le client !)
				if (($cocl_datesigf <> "") OR ($this->tgen == 1))
					$this->fond("DUPLICATA");
		
				$pv_ent_age++;
				$this->SetY($pv_ent_age); // Renvoie le pointeur SOUS l'entête agence
	
				// On restaure la couleur
				$this->SetTextColor($ex_couleurtxt);

				// On restaure la marge
				$this->SetLeftMargin($ex_lMargin);
				break;

			// Entête synthèse contrat clients
			case "cocls" :
				global
					$cocl_codeage,
					$cheminr_logos,
					$pv_ent_age,
					$pv_ent_cocl;
		
	
				$pv_ent_age = 30; // Valeur de départ (mm) du pointeur pour l'affichage agence par rapport au bord haut de la feuille
								  // Cette valeur comprend la hauteur du logo (20 mm)
		
				$pv_ent_cocls = 20; // Valeur de départ (mm) du pointeur pour l'affichage de l'entête intervention par rapport au bord haut de la feuille
	
				// On sauve la couleur en cours et on se met en noir
				$ex_couleurtxt = $this->TextColor;
				$this->SetTextColor(0);

				// On sauve la marge en cours et on se met à 10
				$ex_lMargin = $this->lMargin;
				$this->SetLeftMargin(10);
	
				// Logo Agence
				$this->Image($cheminr_logos."/log".strtolower($cocl_codeage).".png",10,10,0,17); // Image à 10mm du bord gauche, 10mm du bord haut, hauteur maximum 17mm
	
				$row = lit_enr_age($cocl_codeage,TRUE);
				extract ($row);
							
				// Entête Agence
				
					// N° de Siret
					$this->SetY($pv_ent_age);
					$this->SetFont('Arial','I',6);
					$this->Cell(95,3,$age_rcs,0,0,'L');
	
					// Coordonnées
					$ent_age = $age_adr1."\n";
					if ($age_adr2 <> "")
						$ent_age.= $age_adr2."\n";
					$ent_age.= Retournecp_openId($age_ville,TRUE)." ".Retourneville_openId($age_ville,TRUE)."\n";
					$ent_age.= "Tel : ";
					$ent_age.=$age_telf;
					if ($age_txttelf <> "")
						$ent_age.= " (".$age_txttelf.")\n";
					else
						$ent_age.= "\n";
					$ent_age.="Fax : ";
					$ent_age.= $age_fax;
					if ($age_txtfax <> "")
						$ent_age.= " (".$age_txtfax.")\n";
					else
						$ent_age.= "\n";
	
					$pv_ent_age = $pv_ent_age + 3;
					$this->SetY($pv_ent_age);
					$this->SetFont('Arial','',8);
					$this->MultiCell(95,3,$ent_age,0,'L');
	
					// Textes complémentaires
					$ent_age = "";
					if ($age_web <> "")
					{
						$ent_age = "Site Web : ";
						$ent_age.= $age_web." / ";
					}
					$ent_age.= "Email : ";
					$ent_age.= $age_email."\n";
					$ent_age.= "Horaires : ";
					$ent_age.= $age_heures."\n";
					$ent_age.= formatetxt($age_txtent);
					$this->SetFont('Arial','I',6); // Pas besoin de SetY car le MultiCell renvoie juste en dessous
					$this->MultiCell(95,3,$ent_age,0,'L');
					$pv_ent_age = $this->GetY(); // Récupération de la position du pointeur
	
				// Entête synthèse de Contrat
				
				$this->SetY($pv_ent_cocls);
				$this->Cell(95);
				$this->SetFont('Arial','BU',14);
				$this->Cell(95,10,'SYNTHESE DE CONTRAT',0,1,'C');
				
				$this->SetDrawColor(125);
				$this->SetLineWidth(0.4);
				$this->Line(10,$pv_ent_age,200,$pv_ent_age);
				$this->SetDrawColor(0);
				$this->SetLineWidth(0.2);
	
				$pv_ent_age++;
				$this->SetY($pv_ent_age); // Renvoie le pointeur SOUS l'entête agence

				// On restaure la couleur
				$this->SetTextColor($ex_couleurtxt);

				// On restaure la marge
				$this->SetLeftMargin($ex_lMargin);
				break;

			// Entête synthèses contrats clients
			case "coclsm" :
				global
					$tco,
					$cli_prop,
					$cheminr_logos,
					$pv_ent_age,
					$pv_ent_cocl;
		
	
				$pv_ent_age = 30; // Valeur de départ (mm) du pointeur pour l'affichage agence par rapport au bord haut de la feuille
								  // Cette valeur comprend la hauteur du logo (20 mm)
		
				$pv_ent_cocls = 20; // Valeur de départ (mm) du pointeur pour l'affichage de l'entête intervention par rapport au bord haut de la feuille
	
				// On sauve la couleur en cours et on se met en noir
				$ex_couleurtxt = $this->TextColor;
				$this->SetTextColor(0);

				// On sauve la marge en cours et on se met à 10
				$ex_lMargin = $this->lMargin;
				$this->SetLeftMargin(10);
	
				// Logo Agence
				$this->Image($cheminr_logos."/log".strtolower($cli_prop).".png",10,10,0,17); // Image à 10mm du bord gauche, 10mm du bord haut, hauteur maximum 17mm
	
				$rech2 = "SELECT * FROM `" .TBAGE. "` WHERE `age_code` = '$cli_prop'";
				$rs2 = mysql_query($rech2)or die(mysql_error());
				if ($row2 = mysql_fetch_array($rs2))
					extract ($row2);
				mysql_free_result($rs2);
							
				// Entête Agence
				
					// N° de Siret
					$this->SetY($pv_ent_age);
					$this->SetFont('Arial','I',6);
					$this->Cell(95,3,$age_rcs,0,0,'L');
	
					// Coordonnées
					$ent_age = $age_adr1."\n";
					if ($age_adr2 <> "")
						$ent_age.= $age_adr2."\n";
					$ent_age.= Retournecp_openId($age_ville,FALSE)." ".Retourneville_openId($age_ville,FALSE)."\n";
					$ent_age.= "Tel : ";
					$ent_age.=$age_telf;
					if ($age_txttelf <> "")
						$ent_age.= " (".$age_txttelf.")\n";
					else
						$ent_age.= "\n";
					$ent_age.="Fax : ";
					$ent_age.= $age_fax;
					if ($age_txtfax <> "")
						$ent_age.= " (".$age_txtfax.")\n";
					else
						$ent_age.= "\n";
	
					$pv_ent_age = $pv_ent_age + 3;
					$this->SetY($pv_ent_age);
					$this->SetFont('Arial','',8);
					$this->MultiCell(95,3,$ent_age,0,'L');
	
					// Textes complémentaires
					$ent_age = "";
					if ($age_web <> "")
					{
						$ent_age = "Site Web : ";
						$ent_age.= $age_web." / ";
					}
					$ent_age.= "Email : ";
					$ent_age.= $age_email."\n";
					$ent_age.= "Horaires : ";
					$ent_age.= $age_heures."\n";
					$ent_age.= formatetxt($age_txtent);
					$this->SetFont('Arial','I',6); // Pas besoin de SetY car le MultiCell renvoie juste en dessous
					$this->MultiCell(95,3,$ent_age,0,'L');
					$pv_ent_age = $this->GetY(); // Récupération de la position du pointeur
	
				// Entête synthèse de Contrat
				
				$this->SetY($pv_ent_cocls);
				$this->Cell(95);
				$this->SetFont('Arial','BU',14);
				switch ($tco)
				{
					case "o" :
						$this->Cell(95,10,'SYNTHESE DES CONTRATS OUVERTS',0,1,'C');
						break;
					case "c" :
						$this->Cell(95,10,'SYNTHESE DES CONTRATS CLOTS',0,1,'C');
						break;
					default :
						$this->Cell(95,10,'SYNTHESE DES CONTRATS',0,1,'C');
						break;
				}
				
				$this->SetDrawColor(125);
				$this->SetLineWidth(0.4);
				$this->Line(10,$pv_ent_age,200,$pv_ent_age);
				$this->SetDrawColor(0);
				$this->SetLineWidth(0.2);
	
				$pv_ent_age++;
				$this->SetY($pv_ent_age); // Renvoie le pointeur SOUS l'entête agence

				// On restaure la couleur
				$this->SetTextColor($ex_couleurtxt);

				// On restaure la marge
				$this->SetLeftMargin($ex_lMargin);
				break;

			// Relevés de parc
			case "rel" :
				global
					$rel_code,
					$rel_codeage,
					$rel_datecreaf,
					$rel_datemodf,
					$cheminr_logos,
					$pv_ent_age,
					$pv_ent_rel,
					$age_adr1,
					$age_adr2,
					$age_ville,
					$age_telf,
					$age_fax,
					$age_txtfax,
					$age_web,
					$age_email,
					$age_heures,
					$age_txtent,
					$cp_age,
					$ville_age;
					
		
	
				$pv_ent_age = 30; // Valeur de départ (mm) du pointeur pour l'affichage agence par rapport au bord haut de la feuille
								  // Cette valeur comprend la hauteur du logo (20 mm)
		
				$pv_ent_rel = 10; // Valeur de départ (mm) du pointeur pour l'affichage de l'entête intervention par rapport au bord haut de la feuille
	
	
				// On sauve la couleur en cours et on se met en noir
				$ex_couleurtxt = $this->TextColor;
				$this->SetTextColor(0);

				// On sauve la marge en cours et on se met à 10
				$ex_lMargin = $this->lMargin;
				$this->SetLeftMargin(10);
	
				// Logo Agence
				$this->Image($cheminr_logos."/log".strtolower($rel_codeage).".png",10,10,0,17); // Image à 10mm du bord gauche, 10mm du bord haut, hauteur maximum 17mm
							
				// Entête Agence
				
					// N° de Siret
					$this->SetY($pv_ent_age);
					$this->SetFont('Arial','I',6);
					$this->Cell(95,3,$age_rcs,0,0,'L');
	
					// Coordonnées
					$ent_age = $age_adr1."\n";
					if ($age_adr2 <> "")
						$ent_age.= $age_adr2."\n";
					$ent_age.= $cp_age." ".$ville_age."\n";
					$ent_age.= "Tel : ";
					$ent_age.=$age_telf;
					if ($age_txttelf <> "")
						$ent_age.= " (".$age_txttelf.")\n";
					else
						$ent_age.= "\n";
					$ent_age.="Fax : ";
					$ent_age.= $age_fax;
					if ($age_txtfax <> "")
						$ent_age.= " (".$age_txtfax.")\n";
					else
						$ent_age.= "\n";
	
					$pv_ent_age = $pv_ent_age + 3;
					$this->SetY($pv_ent_age);
					$this->SetFont('Arial','',8);
					$this->MultiCell(95,3,$ent_age,0,'L');
	
					// Textes complémentaires
					$ent_age = "";
					if ($age_web <> "")
					{
						$ent_age = "Site Web : ";
						$ent_age.= $age_web." / ";
					}
					$ent_age.= "Email : ";
					$ent_age.= $age_email."\n";
					$ent_age.= "Horaires : ";
					$ent_age.= $age_heures."\n";
					$ent_age.= formatetxt($age_txtent);
					$this->SetFont('Arial','I',6); // Pas besoin de SetY car le MultiCell renvoie juste en dessous
					$this->MultiCell(95,3,$ent_age,0,'L');
					$pv_ent_age = $this->GetY(); // Récupération de la position du pointeur
	
				// Entête Relevé
				
				$this->SetY($pv_ent_rel);
				$this->Cell(138);
				$this->SetFont('Arial','BU',14);
				$this->Cell(138,10,'RELEVE DE PARC',0,1,'C');
				$ent_rel = 	"N°".$rel_code."\n";
				$ent_rel.= 	"\n\n";
				$ent_rel.= 	"Date création : ";
				$ent_rel.= $rel_datecreaf;
				$pv_ent_rel = $pv_ent_rel + 10;
				$this->SetY($pv_ent_rel);
				$this->Cell(138);
				$this->SetFont('Arial','',10);
				$this->MultiCell(138,5,$ent_rel,0,'C');
				// Code-barre
				$posx_cb=138+((138-(px2mm((strlen($rel_code)+2)*10)))/2);
				$this->Code39($posx_cb,26,$rel_code,FALSE,1,5);
				
				$this->SetDrawColor(125);
				$this->SetLineWidth(0.4);
				$this->Line(10,$pv_ent_age,287,$pv_ent_age);
				$this->SetDrawColor(0);
				$this->SetLineWidth(0.2);
	
				$pv_ent_age++;
				$this->SetY($pv_ent_age);

				// On restaure la couleur
				$this->SetTextColor($ex_couleurtxt);

				// On restaure la marge
				$this->SetLeftMargin($ex_lMargin);
				break;

			// Relevés de parc vierges
			case "relv" :
				global
					$agence,
					$tfr,
					$cheminr_logos,
					$pv_ent_age,
					$pv_ent_rel,
					$age_adr1,
					$age_adr2,
					$age_ville,
					$age_telf,
					$age_fax,
					$age_txtfax,
					$age_web,
					$age_email,
					$age_heures,
					$age_txtent,
					$cp_age,
					$ville_age;
					
		
	
				$pv_ent_age = 30; // Valeur de départ (mm) du pointeur pour l'affichage agence par rapport au bord haut de la feuille
								  // Cette valeur comprend la hauteur du logo (20 mm)
		
				$pv_ent_rel = 20; // Valeur de départ (mm) du pointeur pour l'affichage de l'entête intervention par rapport au bord haut de la feuille
	
	
				// On sauve la couleur en cours et on se met en noir
				$ex_couleurtxt = $this->TextColor;
				$this->SetTextColor(0);

				// On sauve la marge en cours et on se met à 10
				$ex_lMargin = $this->lMargin;
				$this->SetLeftMargin(10);
	
				// Logo Agence
				$this->Image($cheminr_logos."/log".strtolower($agence).".png",10,10,0,17); // Image à 10mm du bord gauche, 10mm du bord haut, hauteur maximum 17mm
							
				// Entête Agence
				
					// N° de Siret
					$this->SetY($pv_ent_age);
					$this->SetFont('Arial','I',6);
					$this->Cell(95,3,$age_rcs,0,0,'L');
	
					// Coordonnées
					$ent_age = $age_adr1."\n";
					if ($age_adr2 <> "")
						$ent_age.= $age_adr2."\n";
					$ent_age.= $cp_age." ".$ville_age."\n";
					$ent_age.= "Tel : ";
					$ent_age.=$age_telf;
					if ($age_txttelf <> "")
						$ent_age.= " (".$age_txttelf.")\n";
					else
						$ent_age.= "\n";
					$ent_age.="Fax : ";
					$ent_age.= $age_fax;
					if ($age_txtfax <> "")
						$ent_age.= " (".$age_txtfax.")\n";
					else
						$ent_age.= "\n";
	
					$pv_ent_age = $pv_ent_age + 3;
					$this->SetY($pv_ent_age);
					$this->SetFont('Arial','',8);
					$this->MultiCell(95,3,$ent_age,0,'L');
	
					// Textes complémentaires
					$ent_age = "";
					if ($age_web <> "")
					{
						$ent_age = "Site Web : ";
						$ent_age.= $age_web." / ";
					}
					$ent_age.= "Email : ";
					$ent_age.= $age_email."\n";
					$ent_age.= "Horaires : ";
					$ent_age.= $age_heures."\n";
					$ent_age.= formatetxt($age_txtent);
					$this->SetFont('Arial','I',6); // Pas besoin de SetY car le MultiCell renvoie juste en dessous
					$this->MultiCell(95,3,$ent_age,0,'L');
					$pv_ent_age = $this->GetY(); // Récupération de la position du pointeur
	
				// Entête Relevé
				
				$this->SetY($pv_ent_rel);
				$this->Cell(95);
				$this->SetFont('Arial','BU',14);
				if ($tfr==1)
					$this->Cell(95,10,'RELEVE LICENCE VIERGE',0,1,'C');
				else
					$this->Cell(95,10,'RELEVE MATERIEL VIERGE',0,1,'C');
				$ent_rel .= "\nDate saisie : __/__/____";
				$ent_rel .= "\nPar : ".str_repeat("_",40);
				$pv_ent_rel = $pv_ent_rel + 10;
				$this->SetY($pv_ent_rel);
				$this->Cell(95);
				$this->SetFont('Arial','',10);
				$this->MultiCell(95,5,$ent_rel,0,'C');
				
				$this->SetDrawColor(125);
				$this->SetLineWidth(0.4);
				$this->Line(10,$pv_ent_age,287,$pv_ent_age);
				$this->SetDrawColor(0);
				$this->SetLineWidth(0.2);
	
				$pv_ent_age++;
				$this->SetY($pv_ent_age);

				// On restaure la couleur
				$this->SetTextColor($ex_couleurtxt);

				// On restaure la marge
				$this->SetLeftMargin($ex_lMargin);
				break;

			// Fiche relevé matériel
			case "rpdt" :
				global
					$rpdt_code,
					$rpdt_codeage,
					$rpdt_datecreaf,
					$rpdt_datemodf,
					$cheminr_logos,
					$pv_ent_age,
					$pv_ent_rel,
					$age_adr1,
					$age_adr2,
					$age_ville,
					$age_telf,
					$age_fax,
					$age_txtfax,
					$age_web,
					$age_email,
					$age_heures,
					$age_txtent,
					$cp_age,
					$ville_age;
					
		
	
				$pv_ent_age = 30; // Valeur de départ (mm) du pointeur pour l'affichage agence par rapport au bord haut de la feuille
								  // Cette valeur comprend la hauteur du logo (20 mm)
		
				$pv_ent_rel = 10; // Valeur de départ (mm) du pointeur pour l'affichage de l'entête intervention par rapport au bord haut de la feuille
	
	
				// On sauve la couleur en cours et on se met en noir
				$ex_couleurtxt = $this->TextColor;
				$this->SetTextColor(0);

				// On sauve la marge en cours et on se met à 10
				$ex_lMargin = $this->lMargin;
				$this->SetLeftMargin(10);
	
				// Logo Agence
				$this->Image($cheminr_logos."/log".strtolower($rpdt_codeage).".png",10,10,0,17); // Image à 10mm du bord gauche, 10mm du bord haut, hauteur maximum 17mm
							
				// Entête Agence
				
					// N° de Siret
					$this->SetY($pv_ent_age);
					$this->SetFont('Arial','I',6);
					$this->Cell(95,3,$age_rcs,0,0,'L');
	
					// Coordonnées
					$ent_age = $age_adr1."\n";
					if ($age_adr2 <> "")
						$ent_age.= $age_adr2."\n";
					$ent_age.= $cp_age." ".$ville_age."\n";
					$ent_age.= "Tel : ";
					$ent_age.=$age_telf;
					if ($age_txttelf <> "")
						$ent_age.= " (".$age_txttelf.")\n";
					else
						$ent_age.= "\n";
					$ent_age.="Fax : ";
					$ent_age.= $age_fax;
					if ($age_txtfax <> "")
						$ent_age.= " (".$age_txtfax.")\n";
					else
						$ent_age.= "\n";
	
					$pv_ent_age = $pv_ent_age + 3;
					$this->SetY($pv_ent_age);
					$this->SetFont('Arial','',8);
					$this->MultiCell(95,3,$ent_age,0,'L');
	
					// Textes complémentaires
					$ent_age = "";
					if ($age_web <> "")
					{
						$ent_age = "Site Web : ";
						$ent_age.= $age_web." / ";
					}
					$ent_age.= "Email : ";
					$ent_age.= $age_email."\n";
					$ent_age.= "Horaires : ";
					$ent_age.= $age_heures."\n";
					$ent_age.= formatetxt($age_txtent);
					$this->SetFont('Arial','I',6); // Pas besoin de SetY car le MultiCell renvoie juste en dessous
					$this->MultiCell(95,3,$ent_age,0,'L');
					$pv_ent_age = $this->GetY(); // Récupération de la position du pointeur
	
				// Entête Relevé
				
				$this->SetY($pv_ent_rel);
				$this->Cell(138);
				$this->SetFont('Arial','BU',14);
				$this->Cell(138,10,'RELEVE DE MATERIEL',0,1,'C');
				$ent_rel = 	"N°".$rpdt_code."\n";
				$ent_rel.= 	"\n\n";
				$ent_rel.= 	"Date création : ";
				$ent_rel.= $rpdt_datecreaf;
				$pv_ent_rel = $pv_ent_rel + 10;
				$this->SetY($pv_ent_rel);
				$this->Cell(138);
				$this->SetFont('Arial','',10);
				$this->MultiCell(138,5,$ent_rel,0,'C');
				// Code-barre
				$posx_cb=138+((138-(px2mm((strlen($rpdt_code)+2)*10)))/2);
				$this->Code39($posx_cb,26,$rpdt_code,FALSE,1,5);
				
				$this->SetDrawColor(125);
				$this->SetLineWidth(0.4);
				$this->Line(10,$pv_ent_age,287,$pv_ent_age);
				$this->SetDrawColor(0);
				$this->SetLineWidth(0.2);
	
				$pv_ent_age++;
				$this->SetY($pv_ent_age);

				// On restaure la couleur
				$this->SetTextColor($ex_couleurtxt);

				// On restaure la marge
				$this->SetLeftMargin($ex_lMargin);
				break;

			// Fiche relevé licence
			case "rlic" :
				global
					$rlic_code,
					$rlic_codeage,
					$rlic_datecreaf,
					$rlic_datemodf,
					$cheminr_logos,
					$pv_ent_age,
					$pv_ent_rel,
					$age_adr1,
					$age_adr2,
					$age_ville,
					$age_telf,
					$age_fax,
					$age_txtfax,
					$age_web,
					$age_email,
					$age_heures,
					$age_txtent,
					$cp_age,
					$ville_age;
					
		
	
				$pv_ent_age = 30; // Valeur de départ (mm) du pointeur pour l'affichage agence par rapport au bord haut de la feuille
								  // Cette valeur comprend la hauteur du logo (20 mm)
		
				$pv_ent_rel = 10; // Valeur de départ (mm) du pointeur pour l'affichage de l'entête intervention par rapport au bord haut de la feuille
	
	
				// On sauve la couleur en cours et on se met en noir
				$ex_couleurtxt = $this->TextColor;
				$this->SetTextColor(0);

				// On sauve la marge en cours et on se met à 10
				$ex_lMargin = $this->lMargin;
				$this->SetLeftMargin(10);
	
				// Logo Agence
				$this->Image($cheminr_logos."/log".strtolower($rlic_codeage).".png",10,10,0,17); // Image à 10mm du bord gauche, 10mm du bord haut, hauteur maximum 17mm
							
				// Entête Agence
				
					// N° de Siret
					$this->SetY($pv_ent_age);
					$this->SetFont('Arial','I',6);
					$this->Cell(95,3,$age_rcs,0,0,'L');
	
					// Coordonnées
					$ent_age = $age_adr1."\n";
					if ($age_adr2 <> "")
						$ent_age.= $age_adr2."\n";
					$ent_age.= $cp_age." ".$ville_age."\n";
					$ent_age.= "Tel : ";
					$ent_age.=$age_telf;
					if ($age_txttelf <> "")
						$ent_age.= " (".$age_txttelf.")\n";
					else
						$ent_age.= "\n";
					$ent_age.="Fax : ";
					$ent_age.= $age_fax;
					if ($age_txtfax <> "")
						$ent_age.= " (".$age_txtfax.")\n";
					else
						$ent_age.= "\n";
	
					$pv_ent_age = $pv_ent_age + 3;
					$this->SetY($pv_ent_age);
					$this->SetFont('Arial','',8);
					$this->MultiCell(95,3,$ent_age,0,'L');
	
					// Textes complémentaires
					$ent_age = "";
					if ($age_web <> "")
					{
						$ent_age = "Site Web : ";
						$ent_age.= $age_web." / ";
					}
					$ent_age.= "Email : ";
					$ent_age.= $age_email."\n";
					$ent_age.= "Horaires : ";
					$ent_age.= $age_heures."\n";
					$ent_age.= formatetxt($age_txtent);
					$this->SetFont('Arial','I',6); // Pas besoin de SetY car le MultiCell renvoie juste en dessous
					$this->MultiCell(95,3,$ent_age,0,'L');
					$pv_ent_age = $this->GetY(); // Récupération de la position du pointeur
	
				// Entête Relevé
				
				$this->SetY($pv_ent_rel);
				$this->Cell(138);
				$this->SetFont('Arial','BU',14);
				$this->Cell(138,10,'RELEVE DE LICENCE',0,1,'C');
				$ent_rel = 	"N°".$rlic_code."\n";
				$ent_rel.= 	"\n\n";
				$ent_rel.= 	"Date création : ";
				$ent_rel.= $rlic_datecreaf;
				$pv_ent_rel = $pv_ent_rel + 10;
				$this->SetY($pv_ent_rel);
				$this->Cell(138);
				$this->SetFont('Arial','',10);
				$this->MultiCell(138,5,$ent_rel,0,'C');
				// Code-barre
				$posx_cb=138+((138-(px2mm((strlen($rlic_code)+2)*10)))/2);
				$this->Code39($posx_cb,26,$rlic_code,FALSE,1,5);
				
				$this->SetDrawColor(125);
				$this->SetLineWidth(0.4);
				$this->Line(10,$pv_ent_age,287,$pv_ent_age);
				$this->SetDrawColor(0);
				$this->SetLineWidth(0.2);
	
				$pv_ent_age++;
				$this->SetY($pv_ent_age);

				// On restaure la couleur
				$this->SetTextColor($ex_couleurtxt);

				// On restaure la marge
				$this->SetLeftMargin($ex_lMargin);
				break;

			// Demandes de retour
			case "retd" :
			case "rete" :
				global
					$rete_code,
					$rete_codeage,
					$rete_dateenvf,
					$retp_codeage,
					$retd_dateddef,
					$cheminr_logos,
					$pv_ent_age,
					$pv_ent_rel,
					$age_adr1,
					$age_adr2,
					$age_ville,
					$age_telf,
					$age_fax,
					$age_txtfax,
					$age_web,
					$age_email,
					$age_heures,
					$age_txtent,
					$cp_age,
					$ville_age;
					
		
	
				$pv_ent_age = 30; // Valeur de départ (mm) du pointeur pour l'affichage agence par rapport au bord haut de la feuille
								  // Cette valeur comprend la hauteur du logo (20 mm)
		
				$pv_ent_rel = 10; // Valeur de départ (mm) du pointeur pour l'affichage de l'entête intervention par rapport au bord haut de la feuille
	
	
				// On sauve la couleur en cours et on se met en noir
				$ex_couleurtxt = $this->TextColor;
				$this->SetTextColor(0);

				// On sauve la marge en cours et on se met à 10
				$ex_lMargin = $this->lMargin;
				$this->SetLeftMargin(10);
	
				if ($this->theader=="retd")
					$codeage=$retp_codeage;
				else
					$codeage=$rete_codeage;
				// Logo Agence
				$this->Image($cheminr_logos."/log".strtolower($codeage).".png",10,10,0,17); // Image à 10mm du bord gauche, 10mm du bord haut, hauteur maximum 17mm
							
				// Entête Agence
				
					// N° de Siret
					$this->SetY($pv_ent_age);
					$this->SetFont('Arial','I',6);
					$this->Cell(95,3,$age_rcs,0,0,'L');
	
					// Coordonnées
					$ent_age = $age_adr1."\n";
					if ($age_adr2 <> "")
						$ent_age.= $age_adr2."\n";
					$ent_age.= $cp_age." ".$ville_age."\n";
					$ent_age.= "Tel : ";
					$ent_age.=$age_telf;
					if ($age_txttelf <> "")
						$ent_age.= " (".$age_txttelf.")\n";
					else
						$ent_age.= "\n";
					$ent_age.="Fax : ";
					$ent_age.= $age_fax;
					if ($age_txtfax <> "")
						$ent_age.= " (".$age_txtfax.")\n";
					else
						$ent_age.= "\n";
	
					$pv_ent_age = $pv_ent_age + 3;
					$this->SetY($pv_ent_age);
					$this->SetFont('Arial','',8);
					$this->MultiCell(95,3,$ent_age,0,'L');
	
					// Textes complémentaires
					$ent_age = "";
					if ($age_web <> "")
					{
						$ent_age = "Site Web : ";
						$ent_age.= $age_web." / ";
					}
					$ent_age.= "Email : ";
					$ent_age.= $age_email."\n";
					$ent_age.= "Horaires : ";
					$ent_age.= $age_heures."\n";
					$ent_age.= formatetxt($age_txtent);
					$this->SetFont('Arial','I',6); // Pas besoin de SetY car le MultiCell renvoie juste en dessous
					$this->MultiCell(95,3,$ent_age,0,'L');
					$pv_ent_age = $this->GetY(); // Récupération de la position du pointeur
	
				// Entête Demande
				
				$this->SetY($pv_ent_rel);
				$this->Cell(138);
				$this->SetFont('Arial','BU',14);
				$ent_rel="";
				if ($this->theader=="retd")
				{
					$this->Cell(138,10,'DEMANDE DE RETOUR',0,1,'C');
					$ent_rel.= 	"\n\n\n";
				}
				else
				{
					$this->Cell(138,10,'RENVOI DE PRODUITS',0,1,'C');
					$ent_rel = 	"N°".$rete_code."\n";
					$ent_rel.= 	"\n\n";
				}
				$ent_rel.= 	"Date : ";
				if ($this->theader=="retd")
					$datef=$retd_dateddef;
				else
					$datef=$rete_dateenvf;
				$ent_rel.= $datef;
				$pv_ent_rel = $pv_ent_rel + 10;
				$this->SetY($pv_ent_rel);
				$this->Cell(138);
				$this->SetFont('Arial','',10);
				$this->MultiCell(138,5,$ent_rel,0,'C');
				if ($this->theader=="rete")
				{
					// Code-barre
					$posx_cb=138+((138-(px2mm((strlen($rete_code)+2)*10)))/2);
					$this->Code39($posx_cb,26,$rete_code,FALSE,1,5);
				}
				
				$this->SetDrawColor(125);
				$this->SetLineWidth(0.4);
				$this->Line(10,$pv_ent_age,287,$pv_ent_age);
				$this->SetDrawColor(0);
				$this->SetLineWidth(0.2);
	
				$pv_ent_age++;
				$this->SetY($pv_ent_age);

				// On restaure la couleur
				$this->SetTextColor($ex_couleurtxt);

				// On restaure la marge
				$this->SetLeftMargin($ex_lMargin);
				break;

			default :
				break;
		}
	}
	
	//Pied de page
	function Footer()
	{
		// On sauve la couleur en cours en on se met en noir
		$ex_couleurtxt = $this->TextColor;
		$this->SetTextColor(0);

		//Positionnement à 1,5 cm du bas
		$this->SetY(-15);
		//Police Arial italique 8
		$this->SetFont('Arial','I',8);
		//Numéro de page
		$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'R');

		// On restaure la couleur
		$this->SetTextColor($ex_couleurtxt);
	}

	var $B;
	var $I;
	var $U;
	var $HREF;
	var $fontList;
	var $issetfont;
	var $issetcolor;
	var $issetbgcolor;
	var $ex_fontsize;
	var $ex_lineheight;
	var $ex_x;
	var $ex_y;
	var $nb_ol;
	var $index_li;
	var $nb_ul;
	var $nb_li;
	var $nb_blockquote;
	var $tag_precedent;
	var $tab_rgb;
	var $pas_afficher;
	
	function PDF($orientation='P',$unit='mm',$format='A4')
	{
		//Appel au constructeur parent
		$this->FPDF($orientation,$unit,$format);
		//Initialisation
		$this->SetMargins(10,10,10,10);
		$this->SetFont('Arial','',10);
		$this->lineheight = 5;
		$this->SetFillColor(255,255,255);
		$this->SetTextColor(0);
		$this->B=0;
		$this->I=0;
		$this->U=0;
		$this->HREF='';
		$this->fontlist=array("arial","times","courier","helvetica","symbol");
		$this->issetfont=false;
		$this->issetcolor=false;
		$this->issetbgcolor=false;
		$this->ex_fontsize=10;
		$this->ex_lineheight=5;
		$this->ex_x=0;
		$this->ex_y=0;
		$this->nb_ol=0;
		$this->index_li=array();
		$this->nb_ul=0;
		$this->nb_li=0;
		$this->nb_bq=0;
		$this->tag_precedent='';
		$this->tab_rgb=array();
		$this->pas_afficher=FALSE;
		$this->largeur_page= $this->fw - $this->lMargin - $this->rMargin ;
	}
	
	function WriteHTML($html)
	{
		// Nettoyage des caractères spéciaux et des tags
		$str=array(
		'<br />' => '<br>',
		'<hr />' => '<hr>',
		'[r]' => '<red>',
		'[/r]' => '</red>',
		'[l]' => '<blue>',
		'[/l]' => '</blue>',
		'&#8220;' => '"',
		'&#8221;' => '"',
		'&#8222;' => '"',
		'&#8230;' => '...',
		'&#8217;' => '\'',
		'&#8218;' => '\'',
		'&#34;' => '\'',
		'&#39;' => '\'',
		'&#8249;' => '<',
		'&#8250;' => '>',
		'&#8364;' => '€',
		'&#163;' => '£',
		'&#165;' => '¥',
		'&#402;' => 'ƒ',
		'&#162;' => '¢',
		'&#164;' => '¤',
		'&#169;' => '©',
		'&#174;' => '®',
		'&#8482;' => '™',
		'&ldquo;' => '"',
		'&rdquo;' => '"',
		'&bdquo;' => '"',
		'&hellip;' => '...',
		'&rsquo;' => '\'',
		'&lsquo;' => '\'',
		'&quot;' => '\'',
		'&apos;' => '\'',
		'&lsaquo;' => '<',
		'&rsaquo;' => '>',
		'&euro;' => '€',
		'&pound;' => '£',
		'&yen;' => '¥',
		'&fnof;' => 'ƒ',
		'&cent;' => '¢',
		'&curren;' => '¤',
		'&copy;' => '©',
		'&reg;' => '®',
		'&trade;' => '™'
		);
		
		foreach ($str as $_from => $_to) 
			$html = str_replace($_from,$_to,$html);

		//Suppression de tous les tags non supportés
		$html=strip_tags($html,"<p><sdp><a><br><font><blockquote><h1><h2><h3><h4><h5><h6><ul><li><b><i><u><strong><em><sub><sup><ol><div><span><img>");
		//Remplace les retours chariots, nouvelles lignes, et tabulations par des espaces
		$html=str_replace("\n",' ',$html);
		
		$pattern = '/(<(?:[^<>]+(?:"[^"]*"|\'[^\']*\')?)+>)/';

		$a=preg_split($pattern,trim($html),-1,PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
		
		foreach($a as $key=>$element) 
		{
			if (!preg_match($pattern, $element)) 
			{
				//Texte
				if ($this->pas_afficher == FALSE)
				{
					if ($this->issetbgcolor == true)
					{
						$this->SetFillColor($this->tab_rgb[0],$this->tab_rgb[1],$this->tab_rgb[2]);
					}
					if($this->HREF) // Est-ce un lien ?
					{
						$this->PutLink($this->HREF,$element);
					}
					else 
					{
						// Vérification si blockquote, OL, ou UL
						if (($this->nb_bq > 0) OR ($this->nb_ol > 0) OR ($this->nb_ul > 0))
						{
							if (trim($element) <> "")
							{
								// On sauve la marge de gauche
								$lMargin = $this->lMargin;
								// Blockquote : blancs simples
								if ($this->nb_bq > 0)
								{
									$this->SetLeftMargin($this->nb_bq*10+$lMargin);
									$this->Write($this->lineheight,trim(stripslashes(txtentities($element))));
								}
								// OL ou UL : blancs + numérotation (ou pas)
								if ($this->nb_ol > 0)
								{
									$this->SetLeftMargin($this->nb_ol*10+$lMargin);
									$this->Write($this->lineheight,($this->index_li[$this->nb_ol]).'. '.trim(stripslashes(txtentities($element))));
								}
								if ($this->nb_ul > 0)
								{
									$this->SetLeftMargin($this->nb_ul*10+$lMargin);
									// $this->Write($this->lineheight,'» '.trim(stripslashes(txtentities($element))));
									$this->Write($this->lineheight,chr(149).' '.trim(stripslashes(txtentities($element))));
								}
								// On restaure la marge de gauche
								$this->SetLeftMargin($lMargin);
								$this->tag_precedent='';
							}
						}
						else
						{
							if (trim($element) <> "")
							{
								if ($this->issetbgcolor == true)
								{
									$this->Cell($this->GetStringWidth($element)+2,$this->lineheight,stripslashes(txtentities($element)),0,0,'L',1);
								}
								else
								{
									$this->Write($this->lineheight,stripslashes(txtentities($element)));
									
									// Si il y a un blanc à la fin de la chaîne, Write ne l'imprime pas
									// (ce qui "colle" le texte au suivant) : il faut donc le gérer.
									if ($element{(strlen($element)-1)} == " ")
									{
										$this->Cell($this->GetStringWidth(' '));
									}
									
								}
								$this->tag_precedent='';
							}
						}
					}
					$this->SetFillColor(255);
				}
			}
			else 
			{
				//Tag
				$element = substr($element, 1, -1);
				if($element{0}=='/') 
				{
					$this->CloseTag(strtoupper(substr($element,1)));
				}
				else 
				{
					// Attributs exacts
					// Récupération des tags
					preg_match('/([a-zA-Z0-9]*)/', $element, $tag);
					$tag = strtoupper($tag[0]);
					// Récupération des atributs
					preg_match_all('/([^=\s]*)=["\']?([^"\']*)["\']?/', $element, $attr_array, PREG_PATTERN_ORDER);
					$attr = array(); // reset attribute array
					while(list($id,$name)=each($attr_array[1])) {
						$attr[strtoupper($name)] = $attr_array[2][$id];
					}
					$this->OpenTag($tag,$attr);
				}
			}
		}
	}
	
	function OpenTag($tag,$attr)
	{
		//Balise ouvrante
		switch($tag)
		{
			case 'BR':
				$this->Ln($this->lineheight);
				break;
			case 'P':
				$this->Ln($this->lineheight);
				$this->Ln($this->lineheight);
				break;
			case 'STRONG':
			case 'B':
				$this->SetStyle('B',true);
				break;
			case 'I':
			case 'EM':
				$this->SetStyle('I',true);
				break;
			case 'U':
				$this->SetStyle('U',true);
				break;
			case 'SUB': 
				$this->ex_fontsize = $this->FontSizePt;
				$this->ex_lineheight = $this->lineheight;
				$this->ex_x = $this->GetX();
				$this->ex_y = $this->GetY();
				$this->SetFontSize($this->ex_fontsize-3);
				$this->SetXY($this->ex_x, (($this->ex_y+($this->ex_fontsize*0.3))-2));					  
				break;
			case 'SUP': 
				$this->ex_fontsize = $this->FontSizePt;
				$this->ex_lineheight = $this->lineheight;
				$this->ex_x = $this->GetX();
				$this->ex_y = $this->GetY();
				$this->SetFontSize($this->ex_fontsize-3);
				$this->SetXY($this->ex_x, (($this->ex_y-($this->ex_fontsize*0.3))+2));
				break;
			case 'OL': 
				$this->nb_ol++;
				break;
			case 'UL': 
				$this->nb_ul++;
				break;
			case 'LI':
				$this->ln($this->lineheight);
				$this->nb_li++;
				if ($this->nb_ol > 0)
					$this->index_li[$this->nb_ol] = ($this->index_li[$this->nb_ol])+1;
				break;
			case 'BLOCKQUOTE':
				if($this->tag_precedent <> 'BLOCKQUOTE')
					$this->ln($this->lineheight);
				$this->nb_bq++;
				break;
			case 'H1': 
			  $this->SetFontSize(2*$this->FontSizePt); 
			  $this->lineheight *= 2;
			  break;
			case 'H2': 
			  $this->SetFontSize(1.5*$this->FontSizePt); 
			  $this->lineheight *= 1.5;
			  break;
			case 'H3':
			  $this->SetFontSize(1.17*$this->FontSizePt);
			  $this->lineheight *= 1.17;
			  break;
			case 'H4':
			  $this->SetFontSize($this->FontSizePt); 
			  break;
			case 'H5': 
			  $this->SetFontSize(0.83*$this->FontSizePt); 
			  $this->lineheight *= 0.83;
			  break;
			case 'H6': 
			  $this->SetFontSize(0.67*$this->FontSizePt); 
			  $this->lineheight *= 0.67;
			  break;
			case 'FONT':
			case 'SPAN':
			case 'DIV' :
				if ($tag == 'DIV')
				{
					$this->Ln($this->lineheight); // Toujours un saut de ligne sur balise DIV
				}
				if (isset($attr['COLOR']) and $attr['COLOR']!='') 
				{
					$coul=hex2dec($attr['COLOR']);
					$this->mySetTextColor($coul['R'],$coul['G'],$coul['B']);
					$this->issetcolor=true;
				}
				if (isset($attr['FACE']) and in_array(strtolower($attr['FACE']), $this->fontlist))
				{
					$this->SetFont(strtolower($attr['FACE']));
					$this->issetfont=true;
				}
				if (isset($attr['SIZE']) and $attr['SIZE']!='')
				{
					switch ($attr['SIZE'])
					{
						// Rapport de 1.2 entre chiffre, partant du principe que '4' = taille courante
						// Cf http://www.w3.org/TR/REC-CSS2/fonts.html#value-def-absolute-size
						case 1:
							$this->SetFontSize(0.58*$this->FontSizePt); 
							// $this->lineheight *= 0.58;
							break;
						case 2:
							$this->SetFontSize(0.69*$this->FontSizePt); 
							// $this->lineheight *= 0.69;
							break;
						case 3:
							$this->SetFontSize(0.83*$this->FontSizePt); 
							// $this->lineheight *= 0.83;
							break;
						case 4:
							// $this->SetFontSize($this->FontSizePt); 
							break;
						case 5:
							$this->SetFontSize(1.2*$this->FontSizePt); 
							// $this->lineheight *= 1.2;
							break;
						case 6:
							$this->SetFontSize(1.44*$this->FontSizePt); 
							// $this->lineheight *= 1.44;
							break;
						case 7:
							$this->SetFontSize(1.73*$this->FontSizePt); 
							// $this->lineheight *= 1.73;
							break;
					}
					$this->issetfont=true;
				}
				if (isset($attr['STYLE']) and $attr['STYLE']!='')
				{
					$attr_style = explode(";",$attr['STYLE']);
					for ($i=0; $i<count($attr_style);$i++)
					{
						if (trim($attr_style[$i]) <> "")
						{
							$detail_attr_style = explode(":",$attr_style[$i]);
							switch (strtolower(trim($detail_attr_style[0])))
							{
								case 'background-color' :
									// Mode Hexadécimal ?
									$pos = strpos(trim($detail_attr_style[1]), "#");
									if ($pos === FALSE)
									{
										// Mode RGB ?
										$pos2 = strpos(trim($detail_attr_style[1]), "(");
										if ($pos2 === FALSE)
										{
											break; // Aucun des 2, on quitte
										}
										else
										{
											$str_couleur = substr(trim($detail_attr_style[1]),$pos2+1);
											$str_couleur = substr($str_couleur,0,strlen($str_couleur)-1);
											$this->tab_rgb = explode(",",$str_couleur);
											for ($k=0; $k<count($this->tab_rgb); $k++)
											{
												settype($this->$tab_rgb[$k],"int");
											}
											$this->issetbgcolor=true;
										}
									}
									else
									{
										$coul=hex2dec(trim($detail_attr_style[1]));
										$this->SetFillColor($coul['R'],$coul['G'],$coul['B']);
										$this->issetbgcolor=true;
									}
									break;
								case 'page-break-after' :
									if (trim(strtolower($detail_attr_style[1])) == "always")
									{
										$this->AddPage();
									}
									break;
								case 'display' :
									if (trim(strtolower($detail_attr_style[1])) == "none")
									{
										$this->pas_afficher = TRUE;
									}
									break;
							}
						}
					}
				}
				break;
			case 'A':
				$this->HREF=$attr['HREF'];
				break;
			case 'IMG':
				if(isset($attr['SRC']) and (isset($attr['WIDTH']) or isset($attr['HEIGHT'])))
				{
					if(!isset($attr['WIDTH']))
						$attr['WIDTH'] = 0;
					if(!isset($attr['HEIGHT']))
						$attr['HEIGHT'] = 0;
					$nouvY=$this->GetY()+px2mm($attr['HEIGHT'])-$this->lineheight;
					$this->Image($attr['SRC'], $this->GetX(), $this->GetY(), px2mm($attr['WIDTH']), px2mm($attr['HEIGHT']));
					$this->SetY($nouvY);
				}
				break;
			case 'SDP': // Pour conserver compatibilité avec anciens formats < SMI 0.9.5
				$this->AddPage();
				break;
			// Tableaux plus tard
			case 'TABLE':
			case 'TR':
			case 'TH':
			case 'TD':
				break;
		}
		$this->tag_precedent=$tag;
	}
	
	function CloseTag($tag)
	{
		//Balise fermante
		switch ($tag)
		{
			case 'STRONG':
			case 'B':
				$this->SetStyle('B',false);
				break;
			case 'I':
			case 'EM':
				$this->SetStyle('I',false);
				break;
			case 'U':
				$this->SetStyle('U',false);
				break;
			case 'SUB' :
			case 'SUP' :
				$this->SetFontSize($this->ex_fontsize);
				$this->SetXY($this->ex_x, $this->ex_y);					  
				$this->lineheight = $this->ex_lineheight;
				break;
			case 'OL': 
				$this->nb_ol = $this->nb_ol-1;
				if ($this->nb_ol == 0)
				{
					$this->SetLeftMargin(10);
					$this->ln($this->lineheight);
					$this->ln($this->lineheight);
				}
				break;
			case 'UL': 
				$this->nb_ul = $this->nb_ul-1;
				if ($this->nb_ul == 0)
				{
					$this->SetLeftMargin(10);
					$this->ln($this->lineheight);
					$this->ln($this->lineheight);
				}
				break;
			case 'LI' :
				$this->nb_li = $this->nb_li-1;
				break;
			case 'BLOCKQUOTE':
				$this->nb_bq = $this->nb_bq-1;
				break;
			case 'H1' :
			case 'H2' :
			case 'H3' :
			case 'H4' :
			case 'H5' :
			case 'H6' :
				$this->Ln($this->lineheight);
				$this->lineheight = 5;
				$this->SetFont('Arial','',10);
				$this->SetFontSize(11);
				$this->SetStyle('U',false);
				$this->SetStyle('B',false);
				break;
			case 'FONT' :
			case 'SPAN' :
			case 'DIV' :
				if ($tag == 'SPAN')
				{
					$this->pas_afficher = FALSE;
				}
				if ($tag == 'DIV')
				{
					$this->Ln($this->lineheight); // Toujours un saut de ligne sur balise DIV
				}
				if ($this->issetcolor==true) 
				{
					$this->SetTextColor(0,0,0);
				}
				if ($this->issetfont) 
				{
					$this->SetFont('Arial','',10);
					$this->issetfont=false;
				}
				if ($this->issetbgcolor == true) 
				{
					$this->SetFillColor(255,255,255);
					$this->issetbgcolor=false;
				}
				break;
			case 'A' :
				$this->HREF='';
				break;
			// Tableaux plus tard
			case 'TABLE':
			case 'TD':
			case 'TH':
				break;
			case 'TR':
				break;
		}
	}
	
	function SetStyle($tag,$enable)
	{
		//Modifie le style et sélectionne la police correspondante
		$this->$tag+=($enable ? 1 : -1);
		$style='';
		foreach(array('B','I','U') as $s)
			if($this->$s>0)
				$style.=$s;
		$this->SetFont('',$style);
	}
	
	function mySetTextColor($r,$g=0,$b=0)
	{
		static $_r=0, $_g=0, $_b=0;

		if ($r==-1) 
			$this->SetTextColor($_r,$_g,$_b);
		else 
		{
			$this->SetTextColor($r,$g,$b);
			$_r=$r;
			$_g=$g;
			$_b=$b;
		}
	}
	
	function PutLink($URL,$txt)
	{
		//Place un hyperlien
		$this->SetTextColor(0,0,255);
		$this->SetStyle('U',true);
		$this->Write($this->lineheight,$txt,$URL);
		$this->SetStyle('U',false);
		$this->SetTextColor(0);
	}

	function Rotate($angle,$x=-1,$y=-1)
	{
		// Rotation d'un texte
		if($x==-1)
			$x=$this->x;
		if($y==-1)
			$y=$this->y;
		if($this->angle!=0)
			$this->_out('Q');
		$this->angle=$angle;
		if($angle!=0)
		{
			$angle*=M_PI/180;
			$c=cos($angle);
			$s=sin($angle);
			$cx=$x*$this->k;
			$cy=($this->h-$y)*$this->k;
			$this->_out(sprintf('q %.5f %.5f %.5f %.5f %.2f %.2f cm 1 0 0 1 %.2f %.2f cm',$c,$s,-$s,$c,$cx,$cy,-$cx,-$cy));
		}
	}
	
	function fond($texte)
	{
		// Permet de rajouter un fonds de page en sous-impression
		$this->SetFont('Arial','B',60);
		$this->SetTextColor(203,203,203);
		$this->Rotate(45,55,190);
		$this->Text(55,190,$texte);
		$this->Rotate(0);
		$this->SetTextColor(0,0,0);
	}
}
?>