/*!
*	@file parametrized_popup.js
*	@date 2008-05-27
*	@brief Ensemble de fonctions generiques pour afficher des popups en css
*/

/*!
*	@fn G_popup_from_url (url, params, callback_function)
*	@brief Creer une popup contenant du code venant d'une url
*	@param url Lien vers le script php
*	@param params Parametres à passer au script
*	@param callback_function Notion de callback, executer du javascript apres la requete
*	@par Explication :
*	Cette fonction affiche une popup contenant du code venant d'une url
*	Sa fermeture est à la charge du code recupéré par l'url
*/		
function G_popup_from_url (url, params, callback_function)
{

  G_show_popup (null, '', 'popup_from_url');  // show an empty popup

  G_change_content ('g_popup', url, params, callback_function);  // fill it in ajax

  return;
}  // G_popup_from_url ()

/*!
*	@fn G_confirm_popup (title, body, l_foot, r_foot)
*	@brief Creer une pop up de confirmation
*	@param title Titre de la fenetre
*	@param body Corps de la fenetre
*	@param l_foot Conteneur situé en bas à gauche
*	@param r_foot Conteneur situé en bas à droite
*	@par Explication :
*	Cette fonction affiche un popup uniquement avec du code css
*	Sa mise en page est prévue pour les questions avec deux zones pour des boutons
*	Boutons Confirmer et Annuler par exemple
*/		
function G_confirm_popup (title, body, l_foot, r_foot)
{
  var HTML = '<table width="100%" border="0" cellspacing="0" cellpadding="2">'
  + '<tr>'
  + '<td class="text_body_popup" colspan="2" valign="middle">'
  + body
  + '</td>'
  + '</tr>'
  + '<tr>'
  + '<td width="50%" align="center">' + l_foot + '</td>'
  + '<td width="50%" align="center">' + r_foot + '</td>'
  + '</tr>'
  + '</table>'
  + '</div>';

  G_show_popup (title, HTML, 'confirm_popup');

  return;
}  // G_confirm_popup ()


/*!
*	@fn G_image_popup (title, image_path, text_content)
*	@brief Creer une pop up pour afficher une image
*	@param title Titre de la fenetre
*	@param image_path Chemin de l'image
*	@param text_content Contient du texte a afficher sous l'image
*	@par Explication :
*	Cette fonction affiche une pop up avec une image
*/
function G_image_popup (title, image_path, text_content)
{
  var text = (text_content != null ) ? text_content : '';

  var content = '<img title="' + title + '" alt="' + title + '" src="' 
  + image_path + '" onClick="G_hide_popup()" />'
  + '<input type="button" id="img_popup_button" onClick="G_hide_popup()" title="Fermer" />'
  + '<p class="img_popup_text">' + text + '</p>';

  G_show_popup (title, content, 'image_popup');

  return;
}  // G_image_popup ()


/*!
*	@fn G_show_popup (title, content, class_name)
*	@brief Constructeur de popup
*	@param title Titre de la fenetre
*	@param content Contenu de la fenetre
*	@param class_name Classe css, qui désigne aussi le type de popup
*	@par Explication :
*	Cette fonction est le constructeur de popup. C'est elle qui est appelée pour afficher 
*	chaque nouvelle pop up peut importe sa mise en forme à partir de sa classe
*/
function G_show_popup (title, content, class_name)
{
  var type_popup = (class_name != null) ? class_name : '';

  var Bgrd_popup = document.createElement('div');
  Bgrd_popup.id = 'g_bgrd_popup';
  Bgrd_popup.style.zIndex = '998';//il faut etre sur de passer par dessus tout le site

  var Win_popup = document.createElement('div');
  Win_popup.id = 'g_popup';
  Win_popup.className = type_popup;
  Win_popup.style.zIndex = Bgrd_popup.style.zIndex + 1; //'999' pour etre devant Bgrd_popup

  var HTML = '';
  if (title != null)
  {
    HTML += '<h1><span>' + title + '</span></h1>';
  }
  HTML += '<div class="body_popup">' + content + '</div>';

  Win_popup.innerHTML = HTML;//Remplit la division créé

  //intégration
  document.body.appendChild(Bgrd_popup);
  document.body.appendChild(Win_popup);

  //positionnement
  var ScrollY;
  var ScrollX;
  if (navigator.appName == "Microsoft Internet Explorer")
  {
    ScrollY = document.documentElement.scrollTop + document.body.scrollTop;
    ScrollX = document.documentElement.scrollLeft + document.body.scrollLeft;
  }
  else
  {
    ScrollY = window.pageYOffset;
    ScrollX = window.pageXOffset;
  }
  
  //recup la taille du navigateur selon le modele
  var View = 
  {
    width : (
    window.innerWidth ?
    window.innerWidth :	// IE 6 +
    (document.documentElement && document.documentElement.clientWidth)?
    document.documentElement.clientWidth :// IE 4
    document.body.clientWidth)
    ,
    height : (
    // W3C Compliant calculation
    window.innerHeight ?
    window.innerHeight :// IE 6 +
    (document.documentElement && document.documentElement.clientHeight) ?
    document.documentElement.clientHeight :// IE 4
    document.body.clientHeight)
  }//view

  //Centrer la popup sur l'écran
  Win_popup.style.left = (View.width / 2 - Win_popup.offsetWidth / 2 + ScrollX) + 'px';
  Win_popup.style.top = (View.height / 2 - Win_popup.offsetHeight / 2 + ScrollY ) + 'px';

  return;
}  // G_show_popup ()


/*!
*	@fn G_hide_popup ()
*	@brief Permet de faire disparaitre la popup
*	@par Explication :
*	Cette fonction permet de supprimer tous les éléments engendrés par la création d'une popup
*	Cette fonction peut être utilisée pour simuler un bouton Annuler
*/
function G_hide_popup ()
{
/*
  if(navigator.appName == "Microsoft Internet Explorer" )
  {
    var parent = Node.parentNode;
    popup = document.getElementById('g_popup');
    parent.removeChild(popup);
    fondpopup = document.getElementById('g_bgrd_popup');
    parent.removeChild(fondpopup);
  }
*/
  var popup = document.getElementById('g_popup');
  popup.parentNode.removeChild(popup);
  var fondpopup = document.getElementById('g_bgrd_popup');
  fondpopup.parentNode.removeChild(fondpopup);

  return;
}  // G_hide_popup ()

