<?php

global $tabNaturesJugements;
$tabNaturesEvenements = array(
	md5("Jugement modifiant le plan de cession")=>1408,
	md5("Jugement d'ouverture d'une procédure de redressement judiciaire")=>'1200',
	md5("Jugement d'ouverture de liquidation judiciaire")=>'1301',
	md5("Jugement de clôture pour insuffisance d'actif")=>1503,
	md5("Jugement de clôture de la liquidation des biens pour insuffisance d'actif")=>1503,
	md5("Dépôt de l'état des créances")=>1204,
	md5("Dépôt de l'état des créances Loi de 1985")=>1214,
	md5("Jugement de plan de redressement")=>1414,
	md5("Jugement de clôture pour extinction du passif")=>1502,
	md5("Jugement arrêtant le plan de sauvegarde")=>1101,
	md5("Liste des créances nées après le jugement d'ouverture d'une procédure de liquidation judiciaire")=>1206,
	md5("Jugement de conversion en liquidation judiciaire")=>1300,
	md5("Jugement arrêtant un plan de cession")=>1411,
	md5("Jugement prononçant la résolution du plan de cession et la liquidation judiciaire")=>'1305;1511',
	md5("Liste des créances nées après le jugement d'ouverture d'une procédure de redressement judiciaire")=>1206,
	md5("Dépôt de l'état de collocation")=>1203,
	md5("Jugement prononçant la résolution du plan de redressement et la liquidation judiciaire")=>'1305;1512',
	md5("Jugement prononçant la résolution du plan de sauvegarde et la liquidation judiciaire")=>'1305;1513',
	md5("Jugement de faillite personnelle")=>1600,
	md5("Jugement de faillite personnelle Loi de 1985")=>1610,
	md5("Jugement d'interdiction de gérer")=>1601,
	md5("Jugement d'interdiction de gérer Loi de 1985")=>1611,
	md5("Arrêt de la cour d'appel infirmant une décision soumise à publicité")=>1506,
	md5("Jugement d'ouverture d'une procédure de sauvegarde")=>1100,

	md5("Jugement de reprise de la procédure de liquidation judiciaire")=>1304,
	md5("Jugement modifiant le plan de continuation")=>1409,
	md5("Dépôt du projet de répartition")=>1208,
	md5("Dépôt de l'état des créances et du projet de répartition")=>'1204;1208',
	md5("Jugement d'homologation de l'accord")=>1550,
	md5("Jugement prononçant la résolution du plan de cession")=>1511,
	md5("Jugement de conversion en redressement judiciaire de la procédure de sauvegarde")=>1201,
	md5("Jugement de conversion en liquidation judiciaire de la procédure de sauvegarde")=>1307,
	md5("Jugement modifiant la date de cessation des paiements")=>1450,
	md5("Jugement de clôture de la liquidation des biens pour extinction du passif")=>1502,
	md5("Jugement modifiant le plan de redressement")=>1407,
	md5("Jugement mettant fin à la procédure de redressement judiciaire")=>1500,
	md5("Jugement accordant un délai pour déposer la liste des créances")=>1440,
	md5("Jugement modifiant le plan de sauvegarde")=>1407,
	md5("Jugement de clôture pour insuffisance d'actif et autorisant la reprise des poursuites individuelles")=>'1503;1605',
	md5("Ordonnance statuant sur les contestations du projet de répartition")=>1540,
	md5("Jugement de clôture de la procédure de sauvegarde")=>1500,
	md5("Jugement mettant fin à la procédure de sauvegarde")=>1500,

	md5("Jugement d'extension de liquidation judiciaire")=>1417,
	md5("Jugement d'extension d'une procédure de redressement judiciaire")=>1418,
	md5("Jugement d'extension d'une procédure de sauvegarde")=>1419,
	md5("Rétractation de prononcé de liquidation judiciaire sur tierce opposition")=>1541,

	md5("Rétractation de jugement d'ouverture d'une procédure de sauvegarde sur tierce opposition")=>1542,
	md5("Rétractation de jugement d'ouverture d'une procédure de redressement judiciaire sur tierce opposition")=>1543,
	md5("Rétractation de jugement d'ouverture d'une procédure de liquidation judiciaire sur tierce opposition")=>1544,
	md5("Jugement de désignation des organes de la procédure")=>1215,	// v1.5 Avril 2008

	md5("Rétractation de jugement d'ouverture sur tierce opposition")=>1545,
	md5("Autre rétractation sur tierce opposition")=>1546,
	md5("Autre jugement de liquidation des biens")=>1603,
	md5("Autre arrêt de la Cour d'Appel")=>1507,
	md5("Autre jugement de clôture")=>1500,
	md5("Autres avis de dépôt")=>1216,
	md5("Arrêts divers")=>1515,

	md5("Autre jugement d'ouverture")=>1998,
	md5("Autres jugements et ordonnances")=>1998,
	md5("Autre jugement prononçant")=>1998,

	/**
	 ** v1.5 Avril 2008 - Intégration du Bodacc A en XML : Ventes / Cessions
	 **/
	md5("Achat d'un fonds par une personne morale (insertion provisoire)")=>5103,
	md5("Achat d'un foncs par une personne morale (insertion provisoire)")=>5103,
	md5("Achat d'un fonds par une personne morale.")=>5103,	// Ajout le 23/12/2010
	md5("Achat d'un établissement principal par une personne physique (immatriculation)")=>5000,
	md5("Achat d'un établissement principal par une personne morale lors de l'immatriculation")=>5000,
	md5("Autre achat, apport, attribution")=>5900,
	md5("Autre achat, appport, attribution")=>5900,
	md5("Autre achat, apport, attribution (personne physique)")=>5900,
	md5("Autre achat, apport, attribution (personne physque)")=>5900,
	md5("Autre achat, apport, atribution (personne morale)")=>5900,
	md5("Autre achat, apport, attribution (personne morale)")=>5900,
	md5("achat, apport, attribution (personne morale)")=>5900,
	md5("Achat d'un fonds par une personne physique (insertion provisoire)")=>5103,
	md5("Achat d'un établissement secondaire ou complémentaire par une personne morale")=>5001,
	md5("Apport d'un établissement secondaire/complémentaire (personne morale, uniquement)")=>5001,
	md5("Achat d'un établissement complémentaire par une personne morale")=>5001,
	md5("Achat d'un établissement secondaire ou complémentaire par une personne physique")=>5001,
	md5("Mise en activité d'une société suite à achat")=>'2316;5999',
	md5("Mise en activité d'une soicété suite à achat")=>'2316;5999',
	md5("Achat d'un fonds par le locataire-gérant personne morale")=>5450,
	md5("Achat d'un fonds par le locataire-gérant personne physique")=>5450,
	md5("Apport d'un établissement principal (immatriculation d'une personne morale, uniquement)")=>5000,
	md5("Apport d'un établissement principal (immatriculation d'une personne morale uniquement)")=>5000,
	md5("Attribution d'un fonds suite à partage, à licitation (Immatriculation d'une personne physique)")=>5460,
	md5("Attribution d'un fonds suite à donation avec délai d'oppositions (Immatriculation d'une personne physique)")=>5460,
	md5("Annulation d'avis Vente")=>5999,
	md5("Annulation d'avis vente")=>5999,
	md5("fonds acquis par achat au prix stipulé de 155 000 euros.")=>5900,

	/**
	 ** v1.5 Avril 2008 - Intégration du Bodacc A en XML : Créations / Immatriculations
	 **/
	md5("Immatriculation d'une personne physique suite à création d'un établissement principal")=>4000,
	md5("Immatriculation d'une personne morale (B, D) sans activité")=>4050,
	md5("Immatriculation d'une personne morale (B, C, D) suite à création d'un établissement principal")=>4000,
	md5("Immatriculation d'une personne morale (B, C, D suite à création d'un établissement principal)")=>4000,
	md5("Immatriculation d'une personne physique suite à transfert de l'établissement principal")=>4250,
	md5("Immatriculation d'une personne morale après 1er avis")=>4000,//???????
	md5("Immatriculation d'une personne morale suite à transfert de son siège social")=>4250,
	md5("Immatriculation d'une personne physique, reprise d'activité après location-gérance")=>4350,
	md5("Immatriculation d'une personne morale, établissement principal reçu en location-gérance")=>4355,
	md5("Immatriculation d'une personne physique après 1er avis")=>4000,
	md5("Immatriculation d'une personne physique, établissement principal reçu en location-gérance")=>4355,
	md5("Immatriculation d'une personne physique, établissement principal précédemment exploité par le conjoint")=>4450,
	md5("Immatriculation d'une personne physique, établissement précédemment exploité par le conjoint")=>4450,
	md5("Transformation d'un GAEC")=>4400,
	md5("Autre immatriculation personne morale")=>4000,
	md5("Autre immatriculation personne physique")=>4000,
	md5("Immatriculation d'une société de droit européen (quelle que soit l'origine du fonds)")=>4600,
	md5("Immatriculation avec origine du fonds création")=>4000,
	md5("Immatriculation avec orgine du fonds création")=>4000,
	md5("Immatriculation avec origine de fonds achat")=>4501,
	md5("Immatriculation avec origine du fonds achat")=>4501,
	md5("Immatriculation d'une personne physique, établissement principal hérité, reçu par donation")=>4410,
);

$tabTypeAsso=array(
	'_1'  =>array('even'=>8000,'type'=>'Insertion',		'forme'=>'ASS','lib'=>'ASSOCIATION/CREATION'),
	'_2'  =>array('even'=>8079,'type'=>'Insertion',		'forme'=>'ASS','lib'=>'ASSOCIATION/MODIFICATION'),
	'_3'  =>array('even'=>8090,'type'=>'Insertion',		'forme'=>'ASS','lib'=>'ASSOCIATION/DISSOLUTION'),
	'_4'  =>array('even'=>8000,'type'=>'Insertion',		'forme'=>'FON','lib'=>'FONDATION/CREATION'),
	'_5'  =>array('even'=>8079,'type'=>'Insertion',		'forme'=>'FON','lib'=>'FONDATION/MODIFICATION'),
	'_6'  =>array('even'=>8090,'type'=>'Insertion',		'forme'=>'FON','lib'=>'FONDATION/DISSOLUTION'),
	'_7'  =>array('even'=>8085,'type'=>'Insertion',		'forme'=>'ASS','lib'=>'DECISION DE JUSTICE'),
	'_11' =>array('even'=>8000,'type'=>'Rectificatif',	'forme'=>'ASS','lib'=>'ASSOCIATION/CREATION/RECTIFICATIF'),
	'_22' =>array('even'=>8079,'type'=>'Rectificatif',	'forme'=>'ASS','lib'=>'ASSOCIATION/MODIFICATION/RECTIFICATIF'),
	'_33' =>array('even'=>8090,'type'=>'Rectificatif',	'forme'=>'ASS','lib'=>'ASSOCIATION/DISSOLUTION/RECTIFICATIF'),
	'_44' =>array('even'=>8000,'type'=>'Rectificatif',	'forme'=>'FON','lib'=>'FONDATION/CREATION/RECTIFICATIF'),
	'_55' =>array('even'=>8079,'type'=>'Rectificatif',	'forme'=>'FON','lib'=>'FONDATION/MODIFICATION/RECTIFICATIF'),
	'_66' =>array('even'=>8090,'type'=>'Rectificatif',	'forme'=>'FON','lib'=>'FONDATION/DISSOLUTION/RECTIFICATIF'),
	'_101'=>array('even'=>8000,'type'=>'Insertion',		'forme'=>'ASL','lib'=>'ASL/CREATION'),
	'_102'=>array('even'=>8000,'type'=>'Rectificatif',	'forme'=>'ASL','lib'=>'ASL/CREATION/RECTIFICATIF'),
	'_103'=>array('even'=>8000,'type'=>'Suppression',	'forme'=>'ASL','lib'=>'ASL/CREATION/ANNULATION'),
	'_111'=>array('even'=>8000,'type'=>'Suppression',	'forme'=>'ASS','lib'=>'ASSOCIATION/CREATION/ANNULATION'),
	'_222'=>array('even'=>8079,'type'=>'Suppression',	'forme'=>'ASS','lib'=>'ASSOCIATION/MODIFICATION/ANNULATION'),
	'_333'=>array('even'=>8090,'type'=>'Suppression',	'forme'=>'ASS','lib'=>'ASSOCIATION/DISSOLUTION/ANNULATION'),
	'_444'=>array('even'=>8000,'type'=>'Suppression',	'forme'=>'FON','lib'=>'FONDATION/CREATION/ANNULATION'),
	'_555'=>array('even'=>8079,'type'=>'Suppression',	'forme'=>'FON','lib'=>'FONDATION/MODIFICATION/ANNULATION'),
	'_666'=>array('even'=>8090,'type'=>'Suppression',	'forme'=>'FON','lib'=>'FONDATION/DISSOLUTION/ANNULATION'),
	'_201'=>array('even'=>8079,'type'=>'Insertion',		'forme'=>'ASL','lib'=>'ASL/MODIFICATION'),
	'_202'=>array('even'=>8079,'type'=>'Rectificatif',	'forme'=>'ASL','lib'=>'ASL/MODIFICATION/RECTIFICATIF'),
	'_301'=>array('even'=>8090,'type'=>'Insertion',		'forme'=>'ASL','lib'=>'ASL/DISSOLUTION'),
	'_302'=>array('even'=>8090,'type'=>'Rectificatif',	'forme'=>'ASL','lib'=>'ASL/DISSOLUTION/RECTIFICATIF'),
	'_303'=>array('even'=>8090,'type'=>'Suppression',	'forme'=>'ASL','lib'=>'ASL/DISSOLUTION/ANNULATION'),
	'_8AC'=>array('even'=>8000,'type'=>'Suppression',	'forme'=>'ASL','lib'=>'ASL/CREATION/ANNULATION'),
	'_8AD'=>array('even'=>8000,'type'=>'?',				'forme'=>'ASL','lib'=>'ASL/CREATION/DISSOLUTION'),
	'_8AM'=>array('even'=>8000,'type'=>'?',				'forme'=>'ASL','lib'=>'ASL/CREATION/MODIFICATION'),
	'_8C' =>array('even'=>8000,'type'=>'Insertion',		'forme'=>'ASL','lib'=>'ASL/CREATION'),
	'_8CR'=>array('even'=>8000,'type'=>'Rectificatif',	'forme'=>'ASL','lib'=>'ASL/CREATION/RECTIFICATIF'),
	'_8D' =>array('even'=>8090,'type'=>'Insertion',		'forme'=>'ASL','lib'=>'ASL/DISSOLUTION'),
	'_8DR'=>array('even'=>8090,'type'=>'Rectificatif',	'forme'=>'ASL','lib'=>'ASL/DISSOLUTION/RECTIFICATIF'),
	'_8M' =>array('even'=>8079,'type'=>'Insertion',		'forme'=>'ASL','lib'=>'ASL/MODIFICATION'),
	'_8RM'=>array('even'=>8079,'type'=>'Rectificatif',	'forme'=>'ASL','lib'=>'ASL/MODIFICATION/RECTIFICATIF'),
	'_900'=>array('even'=>8000,'type'=>'Insertion',		'forme'=>'FOD','lib'=>'FONDS_DOTATION/CREATION'),					// Création de fonds de dotation
	'_901'=>array('even'=>8000,'type'=>'Rectificatif',	'forme'=>'FOD','lib'=>'FONDS_DOTATION/CREATION/RECTIFICATIF'),		// Rectificatif de création de fonds de dotation
	'_902'=>array('even'=>8000,'type'=>'Suppression',	'forme'=>'FOD','lib'=>'FONDS_DOTATION/CREATION/ANNULATION'),		// Annulation de création de fonds de dotation
	'_903'=>array('even'=>8079,'type'=>'Insertion',		'forme'=>'FOD','lib'=>'FONDS_DOTATION/MODIFICATION'),				// Modification de fonds de dotation
	'_904'=>array('even'=>8079,'type'=>'Rectificatif',	'forme'=>'FOD','lib'=>'FONDS_DOTATION/MODIFICATION/RECTIFICATIF'),	// Rectificatif de modification de fonds de dotation
	'_905'=>array('even'=>8079,'type'=>'Suppression',	'forme'=>'FOD','lib'=>'FONDS_DOTATION/MODIFICATION/ANNULATION'),	// Annulation de modification de fonds de dotation
	'_906'=>array('even'=>8090,'type'=>'Insertion',		'forme'=>'FOD','lib'=>'FONDS_DOTATION/DISSOLUTION'),				// Dissolution de fonds de dotation
	'_907'=>array('even'=>8090,'type'=>'Rectificatif',	'forme'=>'FOD','lib'=>'FONDS_DOTATION/DISSOLUTION/RECTIFICATIF'),	// Rectificatif de dissolution de fonds de dotation
	'_908'=>array('even'=>8090,'type'=>'Suppression',	'forme'=>'FOD','lib'=>'FONDS_DOTATION/DISSOLUTION/ANNULATION'),		// Annulation de dissolution de fonds de dotation
	'_909'=>array('even'=>8080,'type'=>'Insertion',		'forme'=>'FOD','lib'=>'FONDS_DOTATION/SUSPENSION'),					// Avis de suspension d'activité
	'_910'=>array('even'=>8080,'type'=>'Rectificatif',	'forme'=>'FOD','lib'=>'FONDS_DOTATION/SUSPENSION/RECTIFICATIF'),	// Rectificatif d'avis de suspension d'activité
	'_911'=>array('even'=>8080,'type'=>'Suppression',	'forme'=>'FOD','lib'=>'FONDS_DOTATION/SUSPENSION/ANNULATION'),		// Annulation d'avis de suspension d'activité
	/*
	 _8CA	Annulation creation ASL
	 _8DA	Annulation dissolution ASL
	 _8MA	Annulation modif ASL
	 _8MR	Rectif modif ASL
	*/
);


class MBodacc
{
	private static $tabAccents = array(
		'[A'=>'Á', //5B41
		'^A'=>'Â', //5E41
		'`A'=>'À', //6041
		']A'=>'Ä', //5D41
		'[a'=>'á', //5B61
		'^a'=>'â', //5E61
		'`a'=>'à', //6061
		']a'=>'ä', //5D61
		//'AE'=>'Æ', //4145	// Penser à les retransformer pour les vieux systèmes
		//'ae'=>'æ', //6165	// Penser à les retransformer pour les vieux systèmes
		'|C'=>'Ç', //7C43
		'|c'=>'ç', //7C63
		'[E'=>'É', //5B45
		'^E'=>'Ê', //5E45
		'`E'=>'È', //6045
		']E'=>'Ë', //5D45
		'[e'=>'é', //5B65
		'^e'=>'ê', //5E65
		'`e'=>'è', //6065
		']e'=>'ë', //5D65
		'[I'=>'Í', //5B49
		'^I'=>'Î', //5E49
		'`I'=>'Ì', //6049
		']I'=>'Ï', //5D49
		'[i'=>'í', //5B69
		'^i'=>'î', //5E69
		'`i'=>'ì', //6069
		']i'=>'ï', //5D69
		'[O'=>'Ó', //5B4F
		'^O'=>'Ô', //5E4F
		'`O'=>'Ò', //604F
		']O'=>'Ö', //5D4F
		'[o'=>'ó', //5B6F
		'^o'=>'ô', //5E6F
		'`o'=>'ò', //606F
		']o'=>'ö', //5D6F
		//'OE'=>'.', //4F45	// Penser à les retransformer pour les vieux systèmes
		//'oe'=>'.',	      // Penser à les retransformer pour les vieux systèmes
		'[U'=>'Ú', //5B55
		'^U'=>'Û', //5E55
		'`U'=>'Ù', //6055
		']U'=>'Ü', //5D55
		'[u'=>'ú', //5B75
		'`u'=>'ù', //6075
		'^u'=>'û', //5E75
		']u'=>'ü', //5D75
		'[Y'=>'Ý', //5B59
		'[y'=>'ý', //5B79
	);

	private static $tabBalises=array(
		'00'=>'Texte',
		'01'=>'Identifiant (NOJO) de l.annonce',
		'02'=>'Publication (R1)',
		'03'=>'Partie du BODACC et département (R2)',
		'04'=>'Tribunal (R3)',
		'05'=>'Rubrique au sein du BODACC (R4)',
		'06'=>'Numéro de parution',
		'07'=>'Numéro d.annonce dans la parution',
		'14'=>'R.C.',
		'15'=>'SIREN',
		'16'=>'Raison sociale',
		'17'=>'Activité (Ajout activité ?)',
		'18'=>'PDG / CP (?)',
		'19'=>'Enseigne / Nom Commercial (?)',
		'20'=>'Date',
		'22'=>'Forme juridique',
		'23'=>'Capital (?)',
		'24'=>'Bénéficiaire / Raison sociale (différence avec 16?)',
		'25'=>'Sigle',
		'26'=>'Objet / Commentaire (a exploiter !) (?)',
		'27'=>'Syndic (a vérifier sur les annonces si pas anciennes annonces ?)',
		'29'=>'Nom Commercial (?)',
		'30'=>'Commentaire adresse',
		'31'=>'Rue',
		'32'=>'Localité',
		'33'=>'Commune',
		'35'=>'Conjoint (?)',
		'36'=>'Code postal',
		'37'=>'Additif (?)',
		'40'=>'Texte rectificatif (?)',
		'41'=>'Numéro annonce (?)',
		'42'=>'Date de parution (?)',
		'43'=>'Page (?)',
		'44'=>'Numéro de parution (?)',
		'70'=>'Numéro annonce',
		'71'=>'Date de parution',
		'72'=>'Page',
		'73'=>'Numéro de parution',
		'74'=>'Texte rectificatif/à supprimer',
		'75'=>'Numéro annonce',
		'76'=>'Numéro annonce',
	);

	private static $tabRubriques=array(
		'A101'=>'21 ventes et cessions (RCS A non inscrit)',
		'A102'=>'22 ventes et cessions (RCS B, C et D non inscrit)',
		'A103'=>'13 Créations d\'établissements (RCS A, PP)',
		'A104'=>'14 Créations d\'établissements (RCS B, Ste)',
		'A105'=>'15 Créations d\'établissements (RCS C, GIE ?)',
		'A106'=>'16 Créations d\'établissements (RCS D, Sté Civile)',
		'A107'=>'17 création d\'étab.second.  ....... Pers Phys.  ',	//
		'A108'=>'18 création d\'étab.second.  ....... Société  ',		//
		'A109'=>'19 création d\'étab.second.  ....... Sté Civile  ',	//
		'A124'=>'24 ventes et cessions (RCS A non inscrit)',
		'A125'=>'25 ventes et cessions (RCS B, C et D non inscrit)',
		'A126'=>'13 création d\'étab.+1 PP .......... Pers Phys.  ',	//
		'A131'=>'15 Créations d\'établissements (G.Europ.IE)',			//
		'A136'=>'35 rectificatif ',										//
		'A137'=>'35 additif',											//
		'A138'=>'35 rectificatif supp. ',								//
		'A205'=>'51 reglement judiciaire ........... PP et Sté ',		//
		'A209'=>'63 LB faillite personnelle ........ Pers Phys.',		//
		'A210'=>'61 liquidation des biens .......... PP et Sté ',		//
		'A215'=>'71 suite reglemt/liquid. .......... PP et Sté ',
		'A220'=>'77 Production titres créance ...... PP et Sté ',		//
		'A225'=>'78 Dépôt état des créances vérifiées PP et Sté ',		//
		'A228'=>'79 Cloture insuf.actif ......... PP et Sté ',			//
		'A236'=>'35 rectificatif ',										//
		'A237'=>'35 additif',											//
		'A238'=>'35 rectificatif supp.',								//
		'A401'=>'80 Banqueroute & Infractions ...... Pers Phys.',		// ---
		'A436'=>'35 rectificatif ',										//
		'A437'=>'35 additif',											//
		'A438'=>'35 rectificatif supp. ',								//
		'A701'=>'73 Susp provis poursuites ......... toutes formes',	//
		'A736'=>'35 rectificatif ',										//
		'A737'=>'35 additif',											//
		'A738'=>'35 rectificatif supp. ',								//
		'A8X1'=>'60 redressement & liqu.judiciaire.. toutes formes',	//
		'A801'=>'52 redressement judiciaire ........ toutes formes',
		'A802'=>'62 ouverture liquidation judiciaire toutes formes',
		'A803'=>'74 Appels jug. ouverture .......... toutes formes',	//
		'A804'=>'62 liquidation judiciaire  ........ toutes formes',
		'A805'=>'74 Appels jug. LB ................. toutes formes',	//
		'A806'=>'75 Arret plan de continuation...... toutes formes',
		'A807'=>'75 Modif plan de continuation...... toutes formes',
		'A808'=>'75 Arret plan de cession .......... toutes formes',
		'A809'=>'75 Modif plan de cession .......... toutes formes',
		'A810'=>'76 Cloture extinction Passif ...... toutes formes',
		'A811'=>'79 Cloture insuf.Actif ............ toutes formes',
		'A812'=>'79 Cloture après cession totale ... toutes formes',
		'A813'=>'63 faillite pers. pp ou gerant .... toutes formes',
		'A814'=>'64 interdiction de gerer .......... toutes formes',
		'A815'=>'78 Dépot Créances  ................ toutes formes',
		'A816'=>'78 Dépot Créances nées ap jug ..... toutes formes',
		'A817'=>'78 Dépot Cr.compl.nées ap jug ..... toutes formes',
		'A818'=>'78 Dépot état Collocation ......... toutes formes',
		'A819'=>'75 Modification plan diverse ...... toutes formes',
		'A820'=>'53 Règlements amiables ............ Exploit agric',
		'A821'=>'74 Appels jug. LB ................. toutes formes',
		'A822'=>'56 Procédure insolvabilité......... toutes formes',	//
		'A823'=>'   Ordonnance statuant sur les contestations',
		'A824'=>'xx Dépôt du projet de répartition',					//
		'A836'=>'35 rectificatif ',										//
		'A837'=>'35 additif',											//
		'A838'=>'35 rectificatif supp. ',								//
		'A900'=>'Arrêt Conseil d\'Etat ou Conseil Supérieur des CAC',
		'B1X1'=>'41 Dissolution .............. toutes formes',			//
		'B110'=>'31 mod.mut. diverses .............. A Pers Phys.',
		'B111'=>'32 mod mut. diverses .............. B Société',
		'B112'=>'33 mod mut. diverses .............. C GIE ',
		'B113'=>'34 mod mut. diverses .............. D Sté civile',
		'B114'=>'37 loc. gérance recue ............. Pers Phys.',		//
		'B115'=>'37 loc. gérance recue ............. Société',			//
		'B116'=>'40 radiation ...................... Pers Phys.',
		'B117'=>'40 radiation ...................... Société',
		'B118'=>'37 Location gérance reçue ...... Pers Physique',
		'B119'=>'37 Location gérance reçue ...... Société',
		'B120'=>'30 confirmation Ets pr. ou sec..... Société',
		'B121'=>'30 confirmation Ets pr. ou sec..... Pers Phys.',
		'B122'=>'38 loc.gérance donnée ............. Pers Phys.',		//
		'B123'=>'38 loc.gérance donnée ............. Société',			//
		'B127'=>'40 radiation d\'office ............. toutes formes  ',	//
		'B128'=>'39 mention d\'office............. toutes formes  ',	//
		'B129'=>'39 transfert entre tribunaux ...... Pers Phys.',
		'B130'=>'39 transfert entre tribunaux ...... Société',
		'B132'=>'33 mod mut. diverses .............. GEIE',
		'B133'=>'40 radiation ...................... GEIE',				//
		'B134'=>'33 mod mut. diverses trf siège..... GEIE',				//
		'B136'=>'35 rectificatif ',										//
		'B137'=>'35 additif',											//
		'B138'=>'35 rectificatif supp. ',								//
		'C301'=>'91 dépot des comptes annuels ...... Société',			//
		'C331'=>'91 dépot des comptes annuels ...... Société',
		'C336'=>'35 rectificatif ',										//
		'C337'=>'35 additif',											//
		'C338'=>'35 rectificatif supp. ',								//
	);

	private $tabTribunaux = array();
	private $tabFctDir = array();

	private $tabDevises = array();
	private $tabEvenements=array();

	private $regExFonction = '';
	private $tabDirigeants = array(
		'pr.sidents? directeur g.n.ral'=>1301,
		'P\.-D\.G\.'=>1301,
		'pr.sidents? du conseil d\'administration assumant la direction général'=>1302,
		'pr.sidents? du conseil d\'administration et administrateur'=>1303,
		'pr.sidents? du conseil d\'administration et directeur général'=>1304,
		'pr.sidents? du conseil d\'administration, directeur général et administrateur'=>1305,
		'Administrateurs? délégués?'=>101,
		'administrateurs? du G\.?I\.?E\.?'=>102,
		'Administrateurs? et membres?'=>103,
		'Administrateurs? et membres? du G\.?I\.?E\.?'=>104,
		'Administrateurs? et présidents?'=>105,
		'administrateurs? membres? engageants? le G\.?I\.?E\.?'=>106,
		'Administrateurs? uniques?'=>107,
		'Administrateurs?'=>100,
		'Co.?g.rants? associ.s? ind.finiment responsables?'=>401,
		'Co.?g.rants? associ.s?'=>402,
		'Co.?g.rants? non associ.s?'=>403,
		'Co.?g.rants? non statutaires?'=>404,
		'Co.?g.rants? pouvant engager la soci.t.'=>405,
		'Co.?g.rants? statutaires'=>406,
		'Co.?g.rants?'=>400,
		'Nouveaux? g.rants?'=>901,
		'G.rants? et directeurs? techniques?'=>902,
		'g.rants? et associ.s? en nom collectif'=>903,
		'g.rants? associ.s? en nom collectif'=>903,
		'g.rants? et associ.s? en nom'=>904,
		'g.rants? associ.s? en nom'=>904,
		'g..ants? (?:et )associ.s? ind.finiment (?:et solidairement )responsables?'=>905,
		'g.rants? (?:et )associ.s? uniques?'=>906,
		'g.rants? (?:et )associ.s?'=>907,
		// gérant associé
		'g.rants? associ.s? majoritaires?'=>908,
		'g.rants? associ.s? minoritaires?'=>909,
		'g.rants? associ.s? tenus? ind.finiment et solidairement des dettes sociales'=>910,
		'g.rants? majoritaire'=>911,
		'g.rants? non associ.s?'=>912,
		'g.rants? non statutaires?'=>913,
		'g.rants? pouvant engager seuls la soci.t.'=>914,
		'g.rants? pouvant engager la soci.t.'=>915,
		'g.rants? salari.s?'=>916,
		'g.rants? statutaires? associ.s?'=>917,
		'g.rants? statutaires?'=>918,
		'g.rants? et administrateurs?'=>919,
		'G.rants? techniques?'=>920,
		'anciens? g.rants?'=>921,
		'g.rant\(e\)'=>900,
		'g.rants?'=>900,
		'associ.s? commandit.s? g.rants?'=>201,
		'associ.s? commandit.s?'=>202,
		'Associ.s? d\'une soci.t. civile'=>203,
		'Associ.s? de soci.t. civile'=>204,
		//Associés de société civile
		'associ.s? en nom'=>205,
		'Associ.s? exploitants?'=>206,
		'Associ.s? non exploitants?'=>207,
		'Associ.s? non g.rants?'=>208,
		'Associ.s? g.rants?'=>209,
		'Associ.s? ind.finiment et solidairement responsables?'=>210,
		'Associ.s? ind.finiment responsables?'=>211,
		'Associés?'=>200,
		'Co.?commissaires? aux comptes suppl.ants?'=>301,
		'Co.?commissaires? aux comptes titulaires?'=>302,
		'Commissaires? aux comptes suppl.ants?'=>303,
		'Commissaires? aux comptes titulaires?'=>300,
		'Conjoints? Collaborateurs?'=>500,
		'Contr.leurs? de gestion et des comptes'=>601,
		'contr.leurs? de gestion du G\.?I\.?E\.?'=>602,
		'Contr.leurs? de gestion'=>603,
		'Contr.leurs? des comptes titulaires?'=>604,
		'contr.leurs? des comptes du G\.?I\.?E\.?'=>605,
		'Contr.leurs? des comptes et de gestion'=>606,
		'Contr.leurs? des comptes et membre du G\.?I\.?E\.?'=>607,
		'Contr.leurs? des comptes'=>608,
		'Contr.leurs'=>600,
		'Directeurs? général?u?x? adjoints?'=>701,
		'Directeurs? général?u?x? délégués? et administrateurs?'=>702,
		'Directeurs? général?u?x? délégués? et membres? du comité de surveillance'=>703,
		'Directeurs? général?u?x? délégués?'=>704,
		'Directeurs? général?u?x? et administrateurs?'=>705,
		'Directeurs? général?u?x? et membres? du directoire'=>706,
		'directeurs? général?u?x? uniques? du directoire'=>707,
		'directeurs? général?u?x? uniques?'=>708,
		'directeurs? général?u?x?'=>709,
		'directeurs? gérants?'=>710,
		'Directeurs? techniques?'=>711,
		'Directeurs? des transports'=>712,
		'Directeurs?'=>700,
		'dirigeants? à l\'étranger et en France'=>801,
		'Dirigeants? à l\'étranger'=>802,
		'dirigeants? en France et à l\'étranger'=>803,
		'dirigeants? en France'=>804,//805 autre dirigeant
		'Dirigeants?'=>800,
		'mandataires? ad hoc'=>1101,
		'mandataires? général'=>1102,
		'mandataires? généraux'=>1102,
		'Mandataires?'=>1100,
		'Membres? du G\.?I\.?E\.?'=>1201,
		'membres? du groupement'=>1202,
		'membres? et administrateurs?'=>1203,
		'Membres? du comité de direction'=>1204,
		'Membres? du comité de surveillance'=>1205,
		'Membres? du conseil de direction'=>1206,
		'Membres? du conseil de surveillance'=>1207,
		'Membres? du directoire'=>1208,
		'Membres?'=>1200,
		'fond.s? de pouvoir'=>1000,
		'Personnes? ayant le pouvoir d\'engager à titre habituel la société vis-à-vis des tiers'=>1001,
		'Personnes? ayant pouvoir d\'engager à titre habituel la société vis-à-vis des tiers'=>1001,
		'personnes? ayant le pouvoir d\'engager la société en France'=>1002,
		'personnes? ayant pouvoir d\'engager la société en France'=>1002,
		'Personnes? ayant le pouvoir d\'engager la société'=>1003,
		'Personnes? ayant pouvoir d\'engager la société'=>1003,
		'Personnes? ayant le pouvoir de diriger et gérer'=>1004,
		'Personnes? ayant pouvoir de diriger et gérer'=>1004,
		'personnes? pouvant engager à titre habituel l\'assujetti'=>1005,
		'Personnes?'=>1006,
		'pr.sidents? du conseil d\'administration'=>1306,
		'pr.sidents? du conseil de surveillance'=>1307,
		'pr.sidents? du directoire'=>1308,
		'pr.sidents? du G\.?I\.?E\.?'=>1309,
		'pr.sidents? et membres? du conseil de surveillance'=>1310,
		'Pr.sidents? et membres? du directoire'=>1311,
		'Pr.sidents? et pr.sidents? du comité de direction'=>1312,
		'pr.sidents? et pr.sidents? du comité de surveillance'=>1313,
		'Pr.sidents? et administrateurs?'=>1314,
		'Pr.sidents?'=>1300,
		'repr.sentants? de soci.t. .trang.re'=>1401,
		'repr.sentants? tant en France qu\'à l\'.tranger'=>1402,
		'Repr.sentants? à l\'.tranger'=>1403,
		'repr.sentants? l.gal?a?x? en France'=>1404,
		'Repr.sentants? l.gal?a?x?'=>1405,
	 	'Repr.sentants? permanents?'=>1405,
		'Repr.sentants?'=>1400,
		'co.?responsables? en France'=>1501,
		'responsables? pour la France'=>1502,
		'responsables? tant en France qu\'à l\'étranger'=>1503,
		'Responsables? technique'=>1504,
		'responsables? à l\'.tranger'=>1505,
		'Responsables? de la soci.t. en France'=>1506,
		'Responsables? en France'=>1507,
		'responsables? l.gal en France'=>1508,
		'responsables? en France'=>1508,
		'Responsables?'=>1500,
		'Vice-pr.sidents? du conseil d\'administration'=>1801,
		'vice-pr.sidents? du conseil de surveillance'=>1802,
		'Vice-pr.sidents? et administrateurs? priv.s?'=>1803,
		'Vice-pr.sidents? et administrateurs?'=>1804,
		'Vice-pr.sidents? et membres? du conseil de surveillance'=>1805,
		'Vice-pr.sidents?'=>1800,
		'Vice-secr.taires?'=>1601,
		'Vice-tr.soriers?'=>1701,
		'Tr.soriers?'=>1700,
		'Secr.taires? du conseil d\'administration'=>1602,
		'Secr.taires? du conseil de surveillance'=>1603,
		'Secr.taires?'=>1600,
		'Liquidateurs?'=>1900,
	);

	public function  __construct()
	{
		/** Charge toute la table des tribunaux pour ne pas lancer systématiquement des requètes sur le serveur MySQL
		 ** lors des intégrations de Bodacc
		 **/
		$this->tabTribunaux=$this->getTabTribunaux();
		$this->tabFctDir=$this->getTabFctDir();
		$this->tabEvenements=$this->getTabEvenements();
		$this->tabDevises=$this->getTabDevises();
		$this->regExFonction=implode(')|(', array_keys($this->tabDirigeants));
	}

	/** Converti les accents au format TLS du Bodacc
	 ** @param string Ligne de texte avec accents au format TLS (sans balise Bodacc)
	 ** @return string Ligne de texte avec les accents normaux
	 **/
	public function convertAccents($texteBodacc) {
		return strtr($texteBodacc, self::$tabAccents);
	}

	/** Vérifie si la balise passée en paramètre est valide
	 ** @param string Balise Bodacc
	 ** @return bool
	 **/
	public function isBaliseBodacc($balise) {
		return array_key_exists($balise, self::$tabBalises);
	}

	/** Initialisation du tableau privé des tribunaux **/
	private function getTabTribunaux() {
		if ( file_exists(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'CacheTribunaux.php') ) {
			return include dirname(__FILE__) . DIRECTORY_SEPARATOR . 'CacheTribunaux.php';
		} else {
			$iDb=new WDB();
			$rep=$iDb->select('tribunaux', 'triCode, triNom, triCP, triSiret', "triCode IS NOT NULL");
			$tabTribunaux=array();
			foreach($rep as $k=>$trib) {
				$dep=substr($trib['triCP'],0,2)*1;
				if ($dep==97 || $dep==98)	$dep=substr($trib['triCP'],0,3)*1;
				$tabTmp=array($trib['triCode']=>array('nom'=>$trib['triNom'],'siret'=>$trib['triSiret'],'dep'=>$dep));
				$tabTribunaux=array_merge($tabTribunaux, $tabTmp);
			}
			return $tabTribunaux;
		}
	}

	/** Initialisation du tableau privé des codes fonctions de direction **/
	private function getTabFctDir() {
		if ( file_exists(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'CacheFctDir.php') ) {
			return include dirname(__FILE__) . DIRECTORY_SEPARATOR . 'CacheFctDir.php';
		} else {
			$iDb=new WDB();
			$rep=$iDb->select('bodacc_fonctions', 'codeFct, libelle', '1');
			$tabRet=array();
			foreach($rep as $tabFct)
				$tabRet[$tabFct['codeFct']*1]=$tabFct['libelle'];

			return $tabRet;
		}
	}

	/** Retourne le libellé d'une fonction de direction **/
	function getFctDir($codeFonction) {
		return $this->tabFctDir[$codeFonction];
	}

	/** Initialisation du tableau privé des tribunaux **/
	public function getTribunauxParCommune($codeInseeCommune) {
		$iDb=new WDB();
		$rep=$iDb->select('tribunaux t, tribunauxInsee i', 't.triId, t.triIdSup, i.CodeInsee, t.triCode, t.triType, t.triNom, t.triCP, t.triTel, t.triFax, t.triWeb, t.triMail, t.triSiret, t.triAdrNum, t.triAdrIndRep, t.triAdrTypeVoie, t.triAdrVoie, t.triAdrComp, t.triVille, t.triStatut, t.triDateCessation, t.triCommentaire, t.triNumGreffe', "i.CodeInsee='$codeInseeCommune' AND i.triId=t.triId ORDER BY t.triNumGreffe DESC, t.triId ASC", false, MYSQL_ASSOC);
		$tabTribunaux=array();
		foreach($rep as $k=>$trib) {
			$tabTribunaux[]=$trib;
		}
//		print_r($tabTribunaux);
//		die();
		return $tabTribunaux;
	}

	/** Retourne les tribunaux par Département **/
	public function getTribunauxParDep($dep) {
		$iDb=new WDB();
		if ($dep<96)
			$rep=$iDb->select('tribunaux t', 't.triId, t.triIdSup, t.triCode, t.triType, t.triNom, t.triCP, t.triTel, t.triFax, t.triWeb, t.triMail, t.triSiret, t.triAdrNum, t.triAdrIndRep, t.triAdrTypeVoie, t.triAdrVoie, t.triAdrComp, t.triVille, t.triStatut, t.triDateCessation, t.triCommentaire, t.triNumGreffe', "t.triCP BETWEEN '".$dep."000' AND '".$dep."999' ORDER BY t.triType ASC", false, MYSQL_ASSOC);
		else
			$rep=$iDb->select('tribunaux t', 't.triId, t.triIdSup, t.triCode, t.triType, t.triNom, t.triCP, t.triTel, t.triFax, t.triWeb, t.triMail, t.triSiret, t.triAdrNum, t.triAdrIndRep, t.triAdrTypeVoie, t.triAdrVoie, t.triAdrComp, t.triVille, t.triStatut, t.triDateCessation, t.triCommentaire, t.triNumGreffe', "t.triCP BETWEEN '".$dep."00' AND '".$dep."99' ORDER BY t.triType ASC", false, MYSQL_ASSOC);
		$tabTribunaux=array();
		foreach($rep as $k=>$trib) {
			$tabTribunaux[]=$trib;
		}
		return $tabTribunaux;
	}

	/** Donne la cours d'appel d'un tribunal par son code **/
	public function getTribunalIdCA($codeTribunal) {
		$iDb=new WDB();
		$rep=$iDb->select('tribunaux', 'triIdSup', "triCode='$codeTribunal'");
		return $rep[0][0];
	}

	public function getListeTribunaux() {
		return $this->tabTribunaux;
	}

	/** Initialisation du tableau privé des évènements **/
	private function getTabEvenements() {
		if ( file_exists(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'CacheEvenements.php') ) {
			return include dirname(__FILE__) . DIRECTORY_SEPARATOR . 'CacheEvenements.php';
		} else {
			$iDb=new WDB();
			$rep=$iDb->select('tabEvenements', 'codEven, libEven, Bodacc_Code, Rubrique, version, lienEtab', '1', false, MYSQL_ASSOC);
			$tabRet=array();
			foreach($rep as $k=>$even) {
				//$tabTmp=array($trib['codEven']=>$trib['libEven']);
				$tabRet[$even['codEven']] = array(
						'libEven'=>$even['libEven'],
						'Bodacc_Code'=>$even['Bodacc_Code'],
						'Rubrique'=>$even['Rubrique'],
						'Version'=>$even['version'],
						'LienEtab'=>$even['lienEtab'],
				);
			}
			//echo "<!--".print_r($tabRet)."-->";
			return $tabRet;
		}
	}

	/** Initialisation du tableau privé des devises du Bodacc **/
	private function getTabDevises() {
		if ( file_exists(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'CacheDevises.php') ) {
			return include dirname(__FILE__) . DIRECTORY_SEPARATOR . 'CacheDevises.php';
		} else {
			$iDb=new WDB();
			$rep=$iDb->select('bodacc_devises', 'libDeviseBodacc, devIso', '1', false, MYSQL_ASSOC);
			$tabDevises=array();
			foreach($rep as $k=>$trib) {
				$tabTmp=array($trib['libDeviseBodacc']=>$trib['devIso']);
				$tabDevises=array_merge($tabDevises, $tabTmp);
			}
			return $tabDevises;
		}
	}

	/** Initialisation du tableau privé des devises du Bodacc **/
	/*
	private function getTabDirigeants() {
		$iDb=new WDB();
		$rep=$iDb->select('bodacc_dirigeants', 'libDeviseBodacc, devIso', '1');
		$tabDevises=array();
		foreach($rep as $k=>$trib) {
			$tabTmp=array($trib['libDeviseBodacc']=>$trib['devIso']);
			$tabDevises=array_merge($tabDevises, $tabTmp);
		}
		return $tabDevises;
	}*/

	/** Vérifie si le code du Tribunal BODACC est connu
	 ** @param string Code du Tribunal au BODACC
	 ** @return bool
	 **/
	public function isTribunal($codeBodaccDuTribunal) {
		$codeBodaccDuTribunal=trim($codeBodaccDuTribunal);
		return @array_key_exists($codeBodaccDuTribunal, $this->tabTribunaux);
	}

	/** Retorne le libellé du code du Tribunal BODACC
	 ** @param string Code du Tribunal au BODACC
	 ** @return string Libellé du Tribunal
	 **/
	public function getTribunalNom($codeBodaccDuTribunal) {
		$codeBodaccDuTribunal=trim($codeBodaccDuTribunal);
		return $this->tabTribunaux[$codeBodaccDuTribunal]['nom'];
	}

	public function getTribunalDep($codeBodaccDuTribunal) {
		$codeBodaccDuTribunal=trim($codeBodaccDuTribunal);
		return $this->tabTribunaux[$codeBodaccDuTribunal]['dep'];
	}

	public function getTribunalSiret($codeBodaccDuTribunal) {
		$codeBodaccDuTribunal=trim($codeBodaccDuTribunal);
		return $this->tabTribunaux[$codeBodaccDuTribunal]['siret'];
	}

	public function getTribunalCode($libelleDuTribunal, $dep=0) {
		$libelleDuTribunal=preg_replace('/[0-9]/',' ', str_replace("\r\n",' ', strtoupper($libelleDuTribunal)));
		$libelleDuTribunal=str_replace("\n",' ', $libelleDuTribunal);
		$libelleDuTribunal=strtr(	$libelleDuTribunal,
									array(
										"TRIBUNAL DE COMM'APPELERCE"=>'TC',	// BUG DU BODACC 2008-A093-3146
										'TRIBUNAL DE COMMERCE'=>'TC',
										'TRIBUNAL DE GRANDE INSTANCE'=>'TGI',
										'TRIBUNAL D\'INSTANCE'=>'TI',
										'TRIBUNAL MIXTE DE COMMERCE'=>'TMX',
										'TRIBUNAL DE PREMIERE INSTANCE'=>'TPI',
										'TRIBUNAL SUPÉRIEUR D\'APPEL'=>'TSA',
										' D\''=>' ', ' DE '=>' ',
										'GREFFE DU'=>'', '-'=>' ',
										'Ç'=>'C', 'É'=>'E', 'Î'=>'I', 'Â'=>'A', 'È'=>'E', 'Ô'=>'O', 'Ê'=>'E',
										' DU MANS'=>' LE MANS',
										' DU CREUSOT'=>' LE CREUSOT',
										' DU HAVRE'=>' LE HAVRE',
										' DU '=>' ', 'PUY'=>'PUY EN VELAY',
										'ALÈS'=>'ALES',
										'.'=>' ',
									)
								);
		$libelleDuTribunal=trim(preg_replace('/ +/',' ', $libelleDuTribunal));
		if (''.$dep=='2A' || ''.$dep=='2B')	$dep=20;
		else 					$dep=$dep*1;
		foreach ($this->tabTribunaux as $code=>$tribunal) {

			if ( $dep<>0 && ($tribunal['dep'])*1==$dep ) {
				if ( str_replace('TGIcc', 'TGI', strtr($tribunal['nom'],array('-'=>' ',' DE LA REUNION'=>'')))==$libelleDuTribunal ) {
					return $code;
				} elseif ( str_replace('TIcc', 'TI', strtr($tribunal['nom'],array('-'=>' ',' DE LA REUNION'=>'')))==$libelleDuTribunal ) {
					return $code;
				} elseif (preg_match('/^PREFECTURE/i',$libelleDuTribunal) && preg_match('/^PREFECTURE/i',$tribunal['nom'])) {
					return $code;
				} elseif (preg_match('/^SOUS.PREFECTURE/i',$libelleDuTribunal) && preg_match('/^SOUS.PREFECTURE/i',$tribunal['nom'])) {
					$sprefEnBase=trim(preg_replace('/^SOUS.PREFECTURE (DE|DU|D\')/i','',$tribunal['nom']));
					$sprefParam =trim(strtr(strtr(preg_replace('/^SOUS.PREFECTURE/i','',$libelleDuTribunal),array('SAINT '=>'ST ', 'SAINTE '=>'STE ', 'BASSIN ARCACHON'=>'ARCACHON', ' (DRÔME)'=>'')),'ÀÂÈÎÔ','AAEIO'));
					if($sprefEnBase==$sprefParam)
						return $code;
		//				echo "Pas trouvé $sprefParam ($dep) par rapport à $sprefEnBase en base.".EOL;
					//Pas trouvé SAINT QUENTIN (2) par rapport à ST QUENTIN !
				} elseif ( $dep==13 && $tribunal['nom']=='TGI TARASCON' && $libelleDuTribunal=='TGI TARASCON SUR RHONE')
					return $code;
				elseif ( $dep==13 && $tribunal['nom']=='TC TARASCON' && $libelleDuTribunal=='TC TARASCON SUR RHONE')
					return $code;
			} elseif ( $dep==0 && str_replace('TGIcc', 'TGI', strtr($tribunal['nom'],array('-'=>' ',' DE LA REUNION'=>'')))==$libelleDuTribunal )
					return $code;
			  elseif ( $dep==978 && str_replace('TGIcc', 'TGI', strtr($tribunal['nom'],array('-'=>' ',' DE LA REUNION'=>'')))==$libelleDuTribunal )
					return $code;
			  elseif ( $dep==971 && str_replace('TGIcc', 'TGI', strtr($tribunal['nom'],array('-'=>' ',' DE LA REUNION'=>'')))==$libelleDuTribunal )
					return $code;
			  elseif ( $dep==974 && $libelleDuTribunal=='TMX SAINT PIERRE LA REUNION')
			  		return $code;
			  elseif ( $dep==975 && $libelleDuTribunal=='TGI SAINT PIERRE')
			  		return $code;

			  elseif ( ($dep==95 || $dep==975) &&
			  			($libelleDuTribunal=='TRIBUNAL PREMIERE INSTANCE SAINT PIERRE ET MIQUELON' || $libelleDuTribunal=='TPI SAINT PIERRE ET MIQUELON')
			  		 )
			  		return $code;

			  elseif ( ($dep==971 || $dep==985 || $dep==976) &&
			  			($libelleDuTribunal=='TRIBUNAL PREMIERE INSTANCE MAMOUDZOU' || $libelleDuTribunal=='TPI MAMOUDZOU')
			  		 )
			  		return $code;
			  elseif ( ($dep==971 || $dep==985 || $dep==976) &&
			  			($libelleDuTribunal=='TRIBUNAL DE GRANDE INSTANCE DE MAMOUDZOU' || $libelleDuTribunal=='TGI MAMOUDZOU')
			  		 )
			  		return $code;
			  	/*
			  elseif ($dep==13 && $libelleDuTribunal=='TGI TARASCON SUR RHONE')
			  		return $code;
			  		*/
	  		  /*else
	  				echo "Pas trouvé $libelleDuTribunal ($dep) par rapport à ".$tribunal['nom'].' en base !'.EOL;
	  		   */
		}
		//echo "Pas trouvé $libelleDuTribunal ($dep) par rapport à ".$tribunal['nom'].' en base !'.EOL;
		//echo "Pas trouvé $sprefParam ($dep) par rapport à $sprefEnBase en base !".EOL;
		return false;
	}

	/** Vérifie si le code du Tribunal BODACC est connu
	 ** @param string Code du Tribunal au BODACC
	 ** @return bool
	 **/
	public function isCodeEvenement($codeEven) {
		$code=$codeEven*1;
		if ($code==0)	return false;
		return array_key_exists($code, $this->tabEvenements);
	}

	/** Retourne le libellé de l'évènement BODACC codifié par S&D
	 ** @param string Code de l'évènement BODACC
	 ** @return string Libellé de l'évènement
	 **/
	public function getEvenement($codeEven) {
		$code=((int)$codeEven)*1;
		if ($code==0)	return false;
		return @$this->tabEvenements[$code]['libEven'];
	}

	/** Retourne le niveau de version du code évènement BODACC codifié par S&D
	 ** @param string   Code de l'évènement BODACC
	 ** @return integer Niveau de version (12, 13, 14, ...) correspondant à 1.2, 1.3 ou 1.4 pour les clients !!!
	 **/
	public function getVersionEvenement($codeEven) {
		$code=((int)$codeEven)*1;
		if ($code==0)	return false;
		return @$this->tabEvenements[$code]['Version'];
	}


	/** Retourne le libellé du Chapitre de l'évènement BODACC (comptes, creations, mmd, procol, radiations, ventes)
	 ** @param string Code de l'évènement BODACC
	 ** @return string Libellé du chapitre (comptes, creations, mmd, procol, radiations, ventes)
	 **/
	public function getChapitreEvenement($codeEven) {
		$code=((int)$codeEven)*1;
		if ($code==0)	return false;
		return @$this->tabEvenements[$code]['Rubrique'];
	}

	/** Retourne le code de l'édition du BODACC (A, B ou C)
	 ** @param string Code de l'évènement BODACC
	 ** @return string Libellé de l'édition (A, B ou C)
	 **/
	public function getEditionEvenement($codeEven) {
		$code=$codeEven*1;
		if ($code==0)	return false;
		return @$this->tabEvenements[$code]['Bodacc_Code'];
	}

	/** Retourne si la porté de l'évènement est relative à l'établissement uniquement
	 ** @param $codeEven Code de l'évènement BODACC
	 ** @return bool
	 **/
	public function isEvenementEtab($codeEven) {
		$code=$codeEven*1;
		if ($code==0)	return false;
		return @$this->tabEvenements[$code]['LienEtab'];
	}

	/** Vérifie si une devise texte du Bodacc est connu
	 ** @param string Devise textuelle au BODACC (YENS, EUROS, etc...)
	 ** @return bool
	 **/
	public function isDeviseBodacc($strDevise) {
		return array_key_exists($strDevise, $this->tabDevises);
	}

	/** Retoune le code ISO 4217 d'une devise texte du Bodacc
	 ** @param string Devise textuelle au BODACC (YENS, EUROS, etc...)
	 ** @return string Code ISO 4217 de la devise
	 **/
	public function getDeviseBodacc($strDevise) {
		return $this->tabDevises[$strDevise];
	}

	/** Insert le libellé de devise textuel du Bodacc
	 ** @param string Devise textuelle au BODACC (YENS, EUROS, etc...)
	 ** @param string Devise ISO
	 ** @return bool
	 **/
	public function addDeviseBodacc($strDevise, $deviseIso) {
		$iDb=new WDB();
		if (!$iDb->insert('bodacc_devises', array(	'libDeviseBodacc'=>$strDevise,
													'devIso'=>$deviseIso,
													'dateInsert'=>date('YmdHis')),true))
			return false;
		// On réinitialise le tableau des devises du Bodacc
		$this->tabDevises=$this->getTabDevises();
		return true;
	}

	/** Vérifie si le code rubrique de l'annonce au Bodacc est connu
	 ** @param string Code rubrique de l'annonce
	 ** @return bool
	 **/
	public function isRubriqueBodacc($codeRubriqueBodacc) {
		//return array_key_exists($balise, self::$tabBalises);
		return array_key_exists($codeRubriqueBodacc, self::$tabRubriques);
	}

	/** Retourne le code rubrique de l'annonce au Bodacc
	 ** @param string Code rubrique de l'annonce
	 ** @return string Libellé de la rubrique au BODACC
	 **/
	public function getLibRubriqueBodacc($codeRubriqueBodacc) {
		return $this->tabRubriques[$codeRubriqueBodacc];
	}

	/** Retourne le code évènement de l'annonce en provenance du Bodacc XML
	 **
	 ** @param  string $libJugementXML Libellé de la rubrique au Bodacc XML
	 ** @return string
	 **/
	public function getCodeNatureEvenement($libEvenXML) {
		global $tabNaturesEvenements;
		$codeEven=@$tabNaturesEvenements[md5($libEvenXML)]*1;
		if ($codeEven>0)	return $codeEven;
		else				return 0;
	}

	public function getDirigeants($strAdministration) {
		$tabRet=array();
		$strFonctions=$this->regExFonction;
		$tabNoms=array();
		if (is_array($strAdministration))
			$strAdministration=implode('. ', $strAdministration);
		$strAdministration=trim($strAdministration);
		$strAdministration=str_ireplace('Nom d\'usage :', 'Nom d\'usage =', trim($strAdministration));
		if ($strAdministration=='')	return $tabRet;
		$tabAdministration=explode(':', $strAdministration);
		//file_put_contents('coucou.log',print_r($tabAdministration, 1), FILE_APPEND);
		$tabFonctions=$tabNoms=$tabCodeFct=$tabOldFct=array();

		/**
		 * On boucle sur chaque ligne qui doit contenir NOM PRENOM suivi de la fonction de la ligne suivante
		 * La première ligne ne contient pas de NOM PRENOM car il s'agit de la 1ère ligne
		 */
		foreach ($tabAdministration as $i=>$ligne) {

			/*
			file_put_contents('coucou.log','Ligne : '.$ligne."\n", FILE_APPEND);

			preg_match("/(.*)gérants?(.*)$/i", $ligne, $matches);
			file_put_contents('coucou.log','Test : '.print_r($matches, 1), FILE_APPEND);

			preg_match("/(.*)g.rants?(.*)$/iu", $ligne, $matches);
			file_put_contents('coucou.log','Test : '.print_r($matches, 1), FILE_APPEND);
			*/

			/** On recherche la fonction et son code fonction de la ligne */
			foreach ($this->tabDirigeants as $fonction=>$numFct) {

				//file_put_contents('coucou.log','Fonction : '.$fonction, FILE_APPEND);
				//@todo : provisoire table bdd en utf8
				if (preg_match("/(.*)$fonction(.*)$/iu", $ligne, $matches)) {
					//file_put_contents('coucou.log',"Matched \n", FILE_APPEND);
					$tabCodeFct[$i]=$numFct;
					$tabFonctions[$i]=@preg_replace("/($strFonctions)/i", '', $tabAdministration[$i+1]);
					if(@preg_match("/(partant|ancien|suppression|cha.g|d.part|d.mis(si|is)on|r.vocation)/i", $tabAdministration[$i+1]))
						$tabOldFct[$i]=1;
					else
						$tabOldFct[$i]=0;
					break;
				}
				//file_put_contents('coucou.log',"\n", FILE_APPEND);
			}
		} //file_put_contents('coucou.log',print_r($tabFonctions, 1), FILE_APPEND);
		/** On boucle sur chaque fonction trouvée et on extrait les noms, prénoms **/
		foreach ($tabFonctions as $i=>$ligne) {//$ligne
					$numFonction=$tabCodeFct[$i];
					$oldFonction=$tabOldFct[$i];
					$ligne=trim($ligne);
					/** Chaque Noms pour une même focntion doit être séparée par " et " ou ";" */
					$strNoms=str_replace(' et ', ';', $ligne);
					$tabNoms=explode(';', $strNoms);
					$raisonSociale=$nom=$prenom=$usage='';
					foreach ($tabNoms as $noms) {
						if (preg_match("/^(.*)\((.*)\).*\((.*)\)/i", $noms, $matches)) {
						//Cas type NOM (prenom) (Nom usage : XXXX)
							$nom=trim(str_replace(':', '', $matches[1]));
							if (preg_match("/(.*)repr.sent.e?(.*)/i", $nom, $matches2)) {
								$raisonSociale=$matches2[1];
								$nom=trim(str_replace('par ', '', $matches2[2]));
							}
							$prenom=trim(str_replace('par ', '', $matches[2]));
							$usage=trim(str_ireplace('Nom d\'usage =', '', $matches[3]));
						} elseif (preg_match("/^(.*)\((.*)\)/i", $noms, $matches)) {
							$nom=trim(str_replace(':', '', $matches[1]));
							if (preg_match("/(.*)repr.sent.e?(.*)/i", $nom, $matches2)) {
								$raisonSociale=$matches2[1];
								$nom=trim(str_replace('par ', '', $matches2[2]));
							}
							$prenom=trim($matches[2]);
							$usage='';
							//Cas type NOM (prenom)
						} elseif (preg_match("/^(.*)/i", $noms, $matches)) {
							$tabNomPrenom=$this->getNomPrenomGenre(trim(str_replace(':', '', $matches[1])));
							$nom=$tabNomPrenom['Nom'];
							$prenom=$tabNomPrenom['Prenoms'];
							$usage='';
						} else
							die("Cas non gérée pour cette structure de noms : '$noms'");
						/** @todo Il manque le cas de repr par pour le STE ???  **/
						$tabRet[]=array('fonction'=>$numFonction, 'rs'=>trim(str_replace(',','',$raisonSociale)), 'nom'=>$nom, 'prenom'=>$prenom, 'nomUsage'=>$usage, 'depart'=>$oldFonction);
					}
				}
		//print_r($tabRet);
		//$saisie = fgets(STDIN);
		return $tabRet;
	}

	/** Détermine les NOMs et PRENOMs dans une chaine de caractère
	 **/
	function getNomPrenomGenre($strNomPrenom) {
		$iDb=new WDB('npaipp');
		$noms=$prenoms=$genre='';
		$tabMots=preg_split('/( +|\.+)/', $strNomPrenom);
		//print_r($tabMots);
		foreach ($tabMots as $i=>$prenom) {
			$tabPrenoms=$iDb->select('pp_prenoms', 'prenom, genre, mixte, nbTot',
									 "prenom='".addslashes($prenom)."' AND nbTot>100 ORDER BY nbTot DESC",
									 false, MYSQL_ASSOC);
			if (count($tabPrenoms)>0) {
				$tabPrenom=$tabPrenoms[0];
				if ($i==0)	// C'est plutôt le nom de famille au début de la chaîne
					$noms.=$prenom.' ';
				else {
					$prenoms.=$prenom.', ';
					if ($genre=='' && $tabPrenom['genre']==1 && $tabPrenom['mixte']==0)
						$genre='M';
					elseif ($genre=='' && $tabPrenom['genre']==2 && $tabPrenom['mixte']==0)
						$genre='F';
				}
			} else
				// Ce n'est pas un prénom mais un nom de famille
				$noms.=$prenom.' ';
		}
		return array('Nom'=>trim($noms), 'Prenoms'=>preg_replace('/,$/','',trim($prenoms)), 'Genre'=>$genre);
	}


	function getNumPageAnnonce($bodaccCode, $annee, $num) {

		$tabRet=array();
		$iDb=new WDB();
		$bodacc=$iDb->select('bodacc',
	'Bodacc_Code, Bodacc_Annee_Parution, Bodacc_Num, Num_Annonce, Tribunal_Dept, Tribunal_Code, Rubrique_Bodacc, length(annonce) as Long',
	"Bodacc_Code='$bodaccCode' AND Bodacc_Annee_Parution=$annee AND Bodacc_Num=$num");

		foreach ($bodacc as $k=>$ann) {
			$tabRet[$k]=array(	'BodaccCode'=>$ann['Bodacc_Code'],
								'AnneeParution'=>$ann['Bodacc_Annee_Parution'],
								'BodaccNum'=>$ann['Bodacc_Num'],
								'NumAnnonce'=>$ann['Num_Annonce'],
								'Departement'=>$ann['Tribunal_Dept'],
								'Tribunal'=>$ann['Tribunal_Code'],
								'Rubrique'=>$ann['Rubrique_Bodacc'],
								'nbCar'=>$ann['Long'],
							 );
		}

		return $tabRet;
	}

	/** Vérifie si la date du jugement correspond à une date de jugements civils pour une date donnée
	 ** @param string	$tribunal	Code BODACC du TGIcc
	 ** @param date		$dateJug	Date du jugement
	 ** @param int		$jourJug	Jour de la semaine 1=Lundi à 5=Vendredi
	 ** @param int		$jjJug		Jour du jugement dans le mois
	 ** @return bool
	 **/
	function isAudienceCivile($tribunal, $dateJug, $jourJug, $jjJug, $texteAnnonce) {
		//echo "Tribunal=$tribunal, Date='$dateJug', Jour de la semaine='$jourJug', Jour du mois='$jjJug'".EOL;
		$tribunal=trim($tribunal);
		$droitLocal=false;

		switch ($tribunal) { // Date des audiences civiles droit local
			case 'METZG':	// Le mercredi
			case 'MULHOG':	// Le mercredi
				$droitLocal=true;
				if ($jourJug==3)	{
					echo date('Y/m/d - H:i:s') ." - Droit local : Audiences civiles du mercredi !".EOL;
					return 1;
				}
				break;
			case 'THIONG':	// Le jeudi à 9h
				$droitLocal=true;
				if ($jourJug==4) {
					echo date('Y/m/d - H:i:s') ." - Droit local : Audiences civiles du jeudi !".EOL;
					return 1;
				}
				break;
			case 'SARREG':	// Les 1er, 2ème et 4ème mardi
				$droitLocal=true;
				if ($jourJug==2 && $jjJug<15 && $jjJug>21) {
					echo date('Y/m/d - H:i:s') ." - Droit local : Audiences civiles du mardi !".EOL;
					return 1;
				}
				break;
			case 'STRASG':	// ?
				$droitLocal=true;
				//echo date('Y/m/d - H:i:s') ." - Droit local : Audiences civiles de Strasbourg !".EOL;
				return 0;
				break;
			case 'SAVERG':	// Le mardi et 2ème, 3ème et 4ème vendredi
				$droitLocal=true;
				if ($jourJug==2 || ($jourJug==5 && $jjJug>7)) {
					echo date('Y/m/d - H:i:s') ." - Droit local : Audiences civiles du vendredi !".EOL;
					return 1;
				}
			case 'COLMAG':	// ?
				$droitLocal=true;
				//echo date('Y/m/d - H:i:s') ." - Droit local : Audiences civiles de Colmar !".EOL;
				return 0;
				break;
		}

		if ($droitLocal && preg_match("/insolvabilit.{0,3}notoire/i", $texteAnnonce))
			return 1;

		return 0;
	}

	function getJALparDep($dep) {
		$tabRet=array();
		$iDb=new WDB();
		$rep=$iDb->select('tabJAL', 'id, dep, nomJal, siteWeb, email, adresse, cp, ville, tel, fax, parution, aboAnnuel, infos',
							 "dep=$dep", false, MYSQL_ASSOC);
		foreach($rep as $k=>$jal) {
			$tabRet[]=$jal;
		}
		return $tabRet;
	}

	function getListeJalCollecte() {
		$tabRet=array();
		$iDb=new WDB();
		$rep=$iDb->select('tabJAL', 'id, nomJal', 'sedDateAbo<>0 GROUP BY nomJal ORDER BY nomJal ASC', false, MYSQL_ASSOC);
		foreach($rep as $k=>$jal) {
			$tabRet['_'.$jal['id']]=$jal['nomJal'];
		}
		return $tabRet;
	}

	function getActiviteReelle($siren, $fj) {
		$iDb=new WDB();
		$strEvenVtLg=" AND Rubrique<>'ventes' AND typeEven NOT LIKE '%2700%' AND typeEven NOT LIKE '%2701%' AND typeEven NOT LIKE '%2702%' AND typeEven NOT LIKE '%2703%' AND typeEven NOT LIKE '%2710%' AND typeEven NOT LIKE '%2720%' AND typeEven NOT LIKE '%2721%' AND typeEven NOT LIKE '%2725%' AND typeEven NOT LIKE '%2730%' AND typeEven NOT LIKE '%2740%' AND typeEven NOT LIKE '%2750%' AND typeEven NOT LIKE '%2800%' AND typeEven NOT LIKE '%2840%' AND typeEven NOT LIKE '%2850%' AND typeEven NOT LIKE '%2851%' AND typeEven NOT LIKE '%2860%' AND typeEven NOT LIKE '%2870%' AND typeEven NOT LIKE '%2875%' AND typeEven NOT LIKE '%2880%' AND typeEven NOT LIKE '%2881%' AND typeEven NOT LIKE '%2885%' AND typeEven NOT LIKE '%2890%' AND typeEven NOT LIKE '%2891%' AND typeEven NOT LIKE '%2892%' ";
		/** Recherche de l'activité réelle **/
		$bodacc=$iDb->select(	'bodacc_detail', 'Activite', "siren=$siren AND Activite<>'' AND Activite NOT LIKE 'non precis%' $strEvenVtLg ORDER BY Bodacc_Date_Parution DESC LIMIT 0,1", false, MYSQL_ASSOC);
		$annCap=@$bodacc[0];
		if ($fj<7000 || $fj>7999)
			$tabRet['Activite']=trim(/*preg_replace("/Adjonction.{1,7}activit(?:e|é)(?:.|)\:", '', */$annCap['Activite']);//);

		if ($tabRet['Activite']=='' && trim($tab['activite'])<>'')
			$tabRet['Activite']=trim($tab['activite']);
		elseif ($tabRet['Activite']=='' && ($fj>90   && $fj<94 ||
											$fj>9000 && $fj<9400) ) {
			$siretMin=(''.$siren.'00000')*1;
			$siretMax=(''.$siren.'99999')*1;
			$bodacc=$iDb->select(	'asso', 'Assoc_Web, Assoc_Mail, Assoc_Objet, Assoc_NObjet', "siren=$siren AND (Assoc_Objet<>'' OR Assoc_NObjet<>'') ORDER BY Date_Parution DESC LIMIT 0,1", false, MYSQL_ASSOC);
			$annCap=@$bodacc[0];
			$tabRet['Activite']=trim($annCap['Assoc_NObjet']);
			if ($tabRet['Activite']=='')	$tabRet['Activite']=trim($annCap['Assoc_Objet']);
			if ($tabRet['Web']=='')			$tabRet['Web']=trim($annCap['Assoc_Web']);
			if ($tabRet['Mail']=='')		$tabRet['Mail']=trim($annCap['Assoc_Mail']);
		} elseif ($tabRet['Activite']=='' && ($fj<7000 || $fj>7999)) {
			$bodaccHisto=$iDb->select(	'historiques.entrep e, historiques.texte x',
										'e.ANBASE, e.NOBOD, e.CODTRI, e.JAL, e.DATE, e.CODEVE, e.SSCODE, e.DEPT, e.NOANN, e.ROLE, e.SIREN, e.E1GSIR, e.E1GNIC, x.annonceNum, x.annonceTxt',
										"e.E1GSIR=$siren AND e.ANBASE=x.annonceNum AND e.DATE BETWEEN 19890101 AND 20041231 AND x.annonceTxt LIKE '%ctivit%' GROUP BY e.ANBASE ORDER BY e.DATE DESC", false, MYSQL_ASSOC);
			if (count($bodaccHisto)>0) {
				foreach ($bodaccHisto as $idx=>$ann) {
					if ($tabCodeTri<>'' && $tabCodeTri<>@$ann['CODTRI'])	$tabCodeTri=@$ann['CODTRI'];
					if ( ($ann['CODEVE']<20) ||
						 ($ann['CODEVE']>=30 && $ann['CODEVE']<42) ||
						 ($ann['CODEVE']>=51 && $ann['CODEVE']<80) ) {
						if (preg_match('/(.*)Activit(?:e|é)(?:.|)\:(.*)(?:Adresse(?:.*|)|Commentaires?|Administration|Etablissement principal|Date d\'effet|Date.de.d.but d.activit.|Capital|Nom commercial)(?:.|)\:/Uis', $ann['annonceTxt'], $matches))
							if (strpos(substr($matches[1],-20),'cess') === false &&
								strpos(substr($matches[1],-20),'date') === false) {
								$tabRet['Activite']=$matches[2];
								break;
							}
					}
				}
			}
		}
		return $tabRet['Activite'];
	}

	function getCodeFormeJur($strFJ) {
		global $tabCjBodacc;
		if (count($tabCjBodacc)<1)
			require_once 'Metier/bodacc/configMBodacc.php';

		$strFJ=strtoupper(trim(preg_replace('/[^a-z]/i','',$strFJ)));

		return @$tabCjBodacc[$strFJ];
	}
}

?>