/*************************************************/
//  PRINTABLE VERSION
//  by MaX3315
//  http://codessources.votre-web.com
/*************************************************/


  var divPrintableContentId='divContent';		//div de contenu
  var titleSuffixe=' [version immprimable]';	//suffixe ajouté au titre lors de l'impression
  var classHeader='printableHeader';			//nom de la class css pour le header
  var classFooter='printableFooter';			//    idem      footer
  var contentHeader='<p align="center"><b>Hervé Distinguin Conseils</b><br />Cabinet spécialisé en gestion de patrimoine, en conseils financiers et en assurances pour le particulier, les professions libérales et les entreprises.</p>'; //entete imprimable
  var contentFooter='<p align="center"><b>http://www.consultant-financier-patrimoine.com</b></p>';	//pied de page
  
  //  CONTRAINTE FIREFOX !
  //	Si vous voulez êtres sur que les images s'affiche dans l'entête et le pied de page il est fortement conseillé de les préchargés
  //	En effet sous mozilla la chargement de la 'popup' d'impression est stopé afin de donnée la main à la boite de dialogue d'impression
  //	Tous les éléménts de contenu étant déjà chargés il n'y a pas de problème contrairement à ceux éventuellement ajoutés dans l'entête et le pied de page.
  
  var externalLinkClassName='externalLink';	//nom de la class css utilises pour les liens à transforme. NB si null alors on tatera tous les liens
  var myDefaultCharset='utf-8';  //encodage a utilise dans la popup imprimable
  								//si impossible de déterminer automatiquement l'encodage de la page d'origine
  
  function f_printable_version(idDiv,autoOpenPrintDialog)
  {
	if(autoOpenPrintDialog==null) { autoOpenPrintDialog=false; }
	if(idDiv==null) { idDiv=divPrintableContentId; }

	var objContent=document.getElementById(idDiv);
	if(!objContent) //si l'objet de contenu n'existe pas on se rabbat sur le body
	{
		objContent=document.body;
	}

	var _options='toolbar=yes,location=yes,directories=yes,status=no,menub ar=yes,scrollbars=yes,resizable=yes,copyhistory=no,width='+objContent.offsetWidth+',height='+objContent.offsetHeight+'';

	var popup=window.open('','_blank',_options);
	//on ecrit a la volée le contenu de la popup
	popup.document.write('<html>');
	popup.document.write('<head>');
	if(document.charaterSet)  //convient a firefox
	{
		popup.document.write('<meta http-equiv="Content-Type" content="text/html; charset='+document.charaterSet+'">');
	}
	else
	{
		if(document.defaultCharset)
		{
			popup.document.write('<meta http-equiv="Content-Type" content="text/html; charset='+document.defaultCharset+'">');
		}
		else
		{
			popup.document.write('<meta http-equiv="Content-Type" content="text/html; charset='+myDefaultCharset+'">');
		}
	}
	popup.document.write('<title>'+document.title+'</title>');  //recuperation du titre
	//Listage des CSS de la page courante pour transfert a la popup imprimable
//	var i;
//	for(i=0 ; i<document.styleSheets.length ; i++)
//	{
//		if(document.styleSheets[i].href==window.location || !document.styleSheets[i].href) //pour les feuilles de style attachées
//		{ //premier teste concerne Firefox le second concerne IE
//		  //on souhaite récupéré le contenu de cette feuille de style inline.
//		  if(document.styleSheets[i].cssText) //concerne IE
//		  {
//			  popup.document.write('<style type="text/css">'+document.styleSheets[i].cssText+'</style>');
//		  }
//		  else //pas IE
//		  {
//			  popup.document.write('<style type="text/css">');
//			  var j;
//			  for(j=0 ; j<document.styleSheets[i].cssRules.length ; j++)
//			  {
//				  popup.document.write('\n'+document.styleSheets[i].cssRules[j].cssText);
//			  }
//			  popup.document.write('</style>');
//		  }
//		}
//		else
//		{
//			popup.document.write('<link href="'+document.styleSheets[i].href+'" rel="stylesheet" type="text/css">');
			popup.document.write('<link href="style_imp.css" rel="stylesheet" type="text/css">');
//		}
//	}
	popup.document.write('</head>');
	popup.document.write('<body>');
	popup.document.write('<div id="headerxx"></div>');
	popup.document.write('<div id="content">'+objContent.innerHTML+'</div>');
	popup.document.write('<div id="footer"></div>');
	popup.document.write('<script language="javascript">window.opener.printable_version_callBack(window,\'content\',\'headerxx\',\'footer\','+autoOpenPrintDialog+');</script>');
	popup.document.write('</body>');
	popup.document.write('</html>');
	
	return true;
  }
  
  
  //fonction appelée par la popup afin de lui transformé son contenu
  //Arguments :
  //	popupwin : référence à l'object window de la popup
  //	nameOdDivContent : non du div de contenu dans la popup
  //	nameOfDivHeader,nameOfDivFooter : nom des div d'entete et de pied de page
  //	autoOpenPrintDialog : true | false définit si la popup ouvre toute seule le diaolgue d'impression de l'impression
  function printable_version_callBack(popupwin,nameOfDivContent,nameOfDivHeader,nameOfDivFooter,autoOpenPrintDialog)
  {
	//traitement de l'entete / header
	  var header=popupwin.document.getElementById(nameOfDivHeader);
	  header.className=classHeader;
	  header.innerHTML=contentHeader;

	//tratement du pied de page / footer
	  var footer=popupwin.document.getElementById(nameOfDivFooter);
	  footer.className=classFooter;
	  footer.innerHTML=contentFooter;
	  
	//transformation des liens en liens imprimables
	  transformExternalUrlForPrinting(popupwin,nameOfDivContent,externalLinkClassName);

	//Mise en avant de la popup imprimable
	  popupwin.focus();
	  if(autoOpenPrintDialog)
	  {
		    popupwin.print();
	  }
	  else
	  {
		  	popupwin.alert('Appuyer sur <ctrl>+P pour ouvrir le dialogue d\'impression ou faites Fichier --> Imprimer.');
	  }

	  //Traitement du BIG touchant Fiferox (lors de l'ecriture de contenu dans une popup en javascript)
	  // sans le bloc qui suit, la popup ne termine pas proprement son chargement
	  // rendant ainsi impossible l'ouverture d'une boite de dialogue d'impression
	  // Nous stoppons donc manuellement le chargement de celle-ci.
	  if(popupwin.stop) { popupwin.stop(); }

	  return true;
  }
  
  //fonction permettant de transformer l'ensemble des liens en liens url pleinement imprimmable
  //Arguments :
  //	popupwin : référence à l'object window de la popup
  //	nameOdDivContent : non du div de contenu dans la popup
  //	styleForExternalLink :	class de style associés aux liens qui doivent êter traité par cette fonction.
  //							Si null alors on traite tous les liens
  function transformExternalUrlForPrinting(popupwin,nameOfDivContent,styleForExternalLink)
  {
    var myDiv=popupwin.document.getElementById(nameOfDivContent);
	var urls=myDiv.getElementsByTagName('a');
	for(i=0 ; i<urls.length ; i++)
	{
	  if(styleForExternalLink==null || urls[i].className==styleForExternalLink) // il s'agit bien d'une url a transformer : on se base sur le nom de la classe CSS
	  {
		urls[i].style.backgroundImage='none';	//spécifique à mon site et ma feuille de style
		urls[i].style.paddingRight='0px';		//spécifique à mon site et ma feuille de style
		
	  	if(urls[i].innerHTML.indexOf(urls[i].href)==-1 && urls[i].innerHTML.indexOf(urls[i].href.substr(0,urls[i].href.length-1))==-1)  
		//on ne veut que traité les liens n'ayant pas l'url deja visible
		//Nous testons href ainsi que href privé de son dernier caractere
		//pour la simple raison que dans certains cas les navigateurs complete automatiquement les urls par un / 
		// exemple: <a href="http://www.google.com">...
		//donnera en javascript obj.href => String('http://www.google.com/')  un caractere a automatiquement été ajouté '/'
		{
		  urls[i].innerHTML=urls[i].innerHTML+'&nbsp;(<em>'+urls[i].href+'</em>)';
		}
	  }
	}
	return;
  }

