function acai_carto_help() {

		if (acai_carto_help.singleton) {
			return acai_carto_help.singleton;
		}
		
		acai_carto_help.show = function(pPackInfos, pPackDatas, pPackPrint, pPackGazetter, pLevel) {
			var helpWindow = window.open("","helpWindow","toolbar=no, menubar=yes,scrollbars=yes,width=800,height=400,resizable=yes");
			
			helpContent = '<html>' + writeHead() + '<body bgcolor="#FFFFFF">'
				+ writeIntro(pPackGazetter)
				+ '<hr>' + writeTools(pPackInfos, pPackDatas, pPackPrint, pPackGazetter)
				+ '<hr>' + writeStaticZones()
				+ '<hr>' + writeLayerControl(pPackInfos, pPackDatas);
			
			if (pPackGazetter) { helpContent += '<hr>' + writeGazetter(pLevel); }
			if (pPackInfos) { helpContent += '<hr>' + writeInfos(); }
			if (pPackDatas) { helpContent += '<hr>' + writeDatas(); }
			
			helpWindow.document.write(helpContent);
			helpWindow.document.close();
			helpWindow.focus();
		};
		
		function writeHead() {
			var headContent = '<head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">'
				+ '<title>Aide pour la consultation de la carte</title>'
				+ '<style>'
				+ 'H1 {font-family:Arial;font-size:20pt;font-weight:bold;text-align:center;}'
				+ 'H2 {font-family:Arial;font-size:16pt;font-weight:bold;}'
				+ 'BODY,TD {font-family:Arial;font-size:10pt;}'
				+ 'LI {font-family:Arial;font-size:10pt;list-style:none;}'
				+ 'UL {font-family:Arial;font-size:10pt;list-style:none;}'
				+ 'TABLE {border-width:0;border-style:solid;}'
				+ 'TD {vertical-align:top;border-width:0;border-style:solid;}'
				+ 'IMG {vertical-align:top;}'
				+ '</style></head>';
			
			return headContent;
		}
		
		function writeIntro(pPackGazetter) {
			var introContent = '<h1>Aide pour la consultation de la carte</h1>'
				+ '<table><tr><td>'
				+ 'L\'espace occupé dans la page est décomposé en 4 zones :'
				+ '<ul>'
				+ '<li>La carte à proprement parler, avec une <a href="#minimap">mini-carte</a> de navigation en sur-impression</li>'
				+ '<li>Une <a href="#tools">barre d\'outils</a> gérant les interactions permises sur la carte</li>'
				+ '<li>Une <a href="#infos">zone d\'informations</a></li>';
			if (pPackGazetter) {
				introContent += '<li>Une zone d\'onglets proposant alternativement la <a href="#legend">légende</a> de la carte, la <a href="#layercontrol">liste des thèmes</a> et la <a href="#gazetteer">localisation rapide</a></li>';
			} else {
				introContent += '<li>Une zone d\'onglets proposant alternativement la <a href="#legend">légende</a> de la carte et la <a href="#layercontrol">liste des thèmes</a></li>';
			}
			introContent += '</ul>'
				+ '</td><td>'
				+ '<img src="' + VIEWER_LOCATION + HELP_IMG_VIEWER + '">'
				+ '</td></tr></table>';

			return introContent;
		}

		function writeTools(pPackInfos, pPackDatas, pPackPrint, pPackGazetter) {
			var toolsContent = '<h2><a name="tools">Barre d\'outils :</a></h2>'
				+ '<ul><li>'
				+ '<img src="' + VIEWER_LOCATION + PICTO_ZOOM_PLUS + '" width="30" height="30">'
				+ '<span style="font-weight:bold"> : Activation du zoom incrémenental descendant</span><br>'
				+ '<img src="' + VIEWER_LOCATION + BLANK_IMG + '" width="40" height="10">'
				+ 'Cliquer sur la carte effectue un zoom avant de facteur 2.<br>'
				+ '<img src="' + VIEWER_LOCATION + BLANK_IMG + '" width="40" height="10">'

				+ '</li><li>'
				+ '<img src="' + VIEWER_LOCATION + PICTO_ZOOM_PLUS_RECT + '" width="30" height="30">'
				+ '<span style="font-weight:bold"> : Activation du zoom "rectangle" descendant</span><br>'
				+ '<img src="' + VIEWER_LOCATION + BLANK_IMG + '" width="40" height="10">'
				+ 'Dessiner un rectangle (par "appuyer/déplacer/lâcher") calcule la nouvelle emprise de la carte.<br>'
				+ '<img src="' + VIEWER_LOCATION + BLANK_IMG + '" width="40" height="10">'

				+ '</li><li>'
				+ '<img src="' + VIEWER_LOCATION + PICTO_ZOOM_MINUS + '" width="30" height="30">'
				+ '<span style="font-weight:bold"> : Activation du zoom incrémenental ascendant</span><br>'
				+ '<img src="' + VIEWER_LOCATION + BLANK_IMG + '" width="40" height="10">'
				+ 'Cliquer sur la carte effectue un zoom arrière de facteur 2.<br>'
				+ '<img src="' + VIEWER_LOCATION + BLANK_IMG + '" width="40" height="10">'
				+ 'Il existe toujours un zoom minimal qui correspond à l\'emprise de la mini-carte.<br>'
				+ '<img src="' + VIEWER_LOCATION + BLANK_IMG + '" width="40" height="10">'

				+ '</li><li>'
				+ '<img src="' + VIEWER_LOCATION + PICTO_ZOOM_BACK + '" width="30" height="30">'
				+ '<span style="font-weight:bold"> : Retour à l\'emprise précédente</span><br>'
				+ '<img src="' + VIEWER_LOCATION + BLANK_IMG + '" width="40" height="10">'
				
				
				+ '</li><li>'
				+ '<img src="' + VIEWER_LOCATION + PICTO_PAN + '" width="30" height="30">'
				+ '<span style="font-weight:bold"> : Activation du déplacement panoramique</span><br>'
				+ '<img src="' + VIEWER_LOCATION + BLANK_IMG + '" width="40" height="10">'
				+ 'Par "appuyer/déplacer/lâcher", la nouvelle emprise de la carte est calculée.<br>'
				+ '<img src="' + VIEWER_LOCATION + BLANK_IMG + '" width="40" height="10">'

				+ '</li><li>'
				+ '<img src="' + VIEWER_LOCATION + PICTO_EXTEND + '" width="30" height="30">'
				+ '<span style="font-weight:bold"> : Retour à l\'emprise initiale de la carte</span><br>'
				+ '<img src="' + VIEWER_LOCATION + BLANK_IMG + '" width="40" height="10">'


			if (pPackInfos) {
				toolsContent += '</li><li>'
				+ '<img src="' + VIEWER_LOCATION + PICTO_INFO_CARD + '" width="30" height="30">'
				+ '<span style="font-weight:bold"> : Activation de l\'interrogation du contenu de la carte</span><br>'
				+ '<img src="' + VIEWER_LOCATION + BLANK_IMG + '" width="40" height="10">'
				+ 'Si une ou plusieurs couches peuvent être interrogées (voir "<a href="#layercontrol">Onglet Thèmes</a>"),<br>'
				+ '<img src="' + VIEWER_LOCATION + BLANK_IMG + '" width="40" height="10">'
				+ 'une fenêtre "<a href="#ficheinfos">Fiche d\'informations</a>" est affichée.<br>'
				+ '<img src="' + VIEWER_LOCATION + BLANK_IMG + '" width="40" height="10">';
			}

			if (pPackDatas) {
				toolsContent += '</li><li>'
				+ '<img src="' + VIEWER_LOCATION + PICTO_DATA_SHEET + '" width="30" height="30">'
				+ '<span style="font-weight:bold"> : Consultation des données d\'une couche</span><br>'
				+ '<img src="' + VIEWER_LOCATION + BLANK_IMG + '" width="40" height="10">'
				+ 'Si une couche peut être consultée (voir "<a href="#layercontrol">Onglet Thèmes</a>"),<br>'
				+ '<img src="' + VIEWER_LOCATION + BLANK_IMG + '" width="40" height="10">'
				+ 'une fenêtre "<a href="#datasheet">Tableaux des données</a>" est affichée.<br>'
				+ '<img src="' + VIEWER_LOCATION + BLANK_IMG + '" width="40" height="10">';
			}

			if (pPackPrint) {
/*
				toolsContent += '</li><li>'
				+ '<img src="' + VIEWER_LOCATION + PICTO_PRINT + '" width="30" height="30">'
				+ '<span style="font-weight:bold"> : Affichage d\'une version imprimable de la carte</span><br>'
				+ '<img src="' + VIEWER_LOCATION + BLANK_IMG + '" width="40" height="10">';
*/
				toolsContent += '</li><li>'
				+ '<img src="' + VIEWER_LOCATION + PICTO_PDF + '" width="30" height="30">'
				+ '<span style="font-weight:bold"> : Génération d\'un fichier PDF pour la carte</span><br>'
				+ '<img src="' + VIEWER_LOCATION + BLANK_IMG + '" width="40" height="10">';

				toolsContent += '</li><li>'
				+ '<img src="' + VIEWER_LOCATION + PICTO_PNG + '" width="30" height="30">'
				+ '<span style="font-weight:bold"> : Enregistrement de la carte sous forme d\'image PNG</span><br>'
				+ '<img src="' + VIEWER_LOCATION + BLANK_IMG + '" width="40" height="10">';
			}

			toolsContent += '</li><li>'
				+ '<img src="' + VIEWER_LOCATION + PICTO_HELP + '" width="30" height="30">'
				+ '<span style="font-weight:bold"> : Affichage de l\'aide</span>'

				+ '</li></ul>';
				
			return toolsContent;
		}
		
		function writeStaticZones() {
			var staticContent = '<h2><a name="infos">Informations :</a></h2>'
				+ 'Quatre informations sont présentes dans cette zone :<ul>'
				+ '<li>Une échelle graphique. Sa taille peut varier afin de présenter une distance arrondie.</li>'
				+ '<li>Les dimensions (hauteur et largeur) de l\'espace réel représenté par la carte.</li>'
				+ '<li>La position géographique (coordonnées X et Y) du curseur lors du survol de la carte.</li>'
				+ '<li>Le nom du système de projection de la carte.</li>'
				+ '</ul>'
				
				+ '<hr>'
				
				+ '<h2><a name="minimap">Mini-carte de navigation :</a></h2>'
				+ '<table><tr><td>'
				+ 'La mini-carte de navigation rappelle par rapport à l\'étendue géographique maximale de la carte la position courante de la carte.<br><br>'
				+ 'Toute modification de l\'emprise de la carte (zoom, pan, localisation...) est immédiatement répercutée sur la mini-carte.<br><br>'
				+ 'De plus, le déplacement du rectangle dans la mini-carte entraine réciproquement la modification de l\'emprise de la carte.<br><br>'
				+ 'La mini-carte peut être à loisir masquée ou affichée grâce au petit pictogramme situé dans son coin haut-droit.'
				+ '</td></tr></table>'
				
				+ '<hr>'

				+ '<h2><a name="legend">Onglet Légende :</a></h2>'
				+ 'N\'apparaissent dans cette zone que les éléments de légende de couches actuellement visibles.<br>';
				
			
			return staticContent;
		}
		
		function writeLayerControl(pPackInfos, pPackDatas) {
			var layerControlContent ='<h2><a name="layercontrol">Onglet Thèmes :</a></h2>'
				+ 'Chaque couche présente dans la carte est caractérisée par :<br>&nbsp;'
				+ '<table><tr><td>'
				+ '<ul><li>'
				+ '<img src="' + VIEWER_LOCATION + ICO_LAYER + '"> <span style="font-weight:bold">Visibilité de la couche</span><br>'
				+ '<blockquote>'
				+ 'La case à cocher n\'est pas accessible si le facteur de zoom actuel de la carte n\'est pas compris dans l\'intervalle de visibilité associé à la couche.<br>'
				+ 'Si un zoom descendant est nécessaire pour pouvoir afficher la couche, la case à cocher est remplacée par l\'imagette'
				+ '<img src="' + VIEWER_LOCATION + ICO_TO_ZOOMIN + '">.<br>'
				+ 'Si un zoom ascendant est nécessaire pour pouvoir afficher la couche, la case à cocher est remplacée par l\'imagette'
				+ '<img src="' + VIEWER_LOCATION + ICO_TO_ZOOMOUT + '">.<br>'
				+ 'Certaines couches ne peuvent être masquées : il s\'agit d\'un choix volontaire des rédacteurs de la carte.<br>'
				+ '</blockquote>';
				
			if (pPackInfos) {
				layerControlContent += '</li><li>'
					+ '<img src="' + VIEWER_LOCATION + ICO_INFO + '"> <span style="font-weight:bold">Possibilité d\'interroger la couche via la carte</span><br>'
					+ '<blockquote>'
					+ 'Toutes les couches dont la case est cochée seront prises en compte lors de l\'utilisation ultérieure de l\'outil d\'interrogation'
					+ '<img src="' + VIEWER_LOCATION + PICTO_INFO_CARD + '" width="20" height="20">.<br>'
					+ 'Selon le paramétrage de la carte, la case à cocher est accessible ou non pour la couche.'
					+ '</blockquote>';
			}
				
			if (pPackDatas) {
				layerControlContent += '</li><li>'
					+ '<img src="' + VIEWER_LOCATION + ICO_DATA + '"> <span style="font-weight:bold">Possibilité de consulter les données de la couche</span><br>'
					+ '<blockquote>'
					+ 'La couche correspondant au bouton radio sélectionné sera celle prise en compte par l\'utilisation ultérieure de l\'outil de consultation des données'
					+ '<img src="' + VIEWER_LOCATION + PICTO_DATA_SHEET + '" width="20" height="20">.<br>'
					+ 'Selon le paramétrage de la carte, le bouton radio est accessible ou non pour la couche.'
					+ '</blockquote>';
			}

			layerControlContent += '</li><li>'
				+ '<img src="' + VIEWER_LOCATION + ICO_OPACITY + '"> <span style="font-weight:bold">Degré d\'opacité de la couche</span><br>'
				+ '<blockquote>'
				+ 'Cliquer sur le pictogramme '
				+ '<img src="' + VIEWER_LOCATION + ICO_TO_LESS_OPACITY + '" width="10" height="16">'
				+ ' permet de réduire l\'opacité de la couche.<br>'
				+ 'Cliquer sur le pictogramme '
				+ '<img src="' + VIEWER_LOCATION + ICO_TO_MORE_OPACITY + '" width="10" height="16">'
				+ ' permet d\'augmenter l\'opacité de la couche.'
				+ '</blockquote>';
				
			layerControlContent += '</li></ul>'
				+ '</td></tr></table>';
			
			return layerControlContent;
		}
		
		function writeGazetter(pLevel) {
			var gazetterContent = '<h2><a name="gazetteer">Onglet Aller à ... :</a></h2>'
				+ '<table><tr><td>'
				+ 'Cette zone permet de centrer la carte sur ';
			
			if (pLevel == GAZEETTER_LEVEL_ALL) { gazetterContent += 'une région, un département ou une commune.';}
			if (pLevel == GAZEETTER_LEVEL_REG) { gazetterContent += 'un département ou une commune.';}
			if (pLevel == GAZEETTER_LEVEL_DEP) { gazetterContent += 'une commune.';}

			gazetterContent	+= '<br><br>La nouvelle emprise (après clic sur le bouton "Localiser") correspond à l\'emprise de l\'entité administrative choisie.'
				+ '</td></tr></table>';

			return gazetterContent;
		}

		function writeInfos() {
			var infosContent = '<h2><a name="ficheinfos">Fenêtre "Fiche d\'informations :</a></h2>'
				+ 'Pour chacune des couches interrogeables, chaque objet "trouvé" grâce à l\'outil d\'interrogation de la carte est présenté avec ses attributs, dans une nouvelle fenêtre.<br>';

			return infosContent;
		}

		function writeDatas() {
			var datasContent = '<h2><a name="datasheet">Fenêtre "Tableau de données :</a></h2>'
				+ 'Pour la couche consultable, tous les objets de la couche sont présentés avec leurs attributs, dans une nouvelle fenêtre.<br>'
				+ 'Grâce au bouton <img src="' + VIEWER_LOCATION + PICTO_GOTO + '">, il est alors possible de se localiser dans la carte sur un objet particulier.';

			return datasContent;
		}


}

acai_carto_help.singleton = new acai_carto_help();

