

// ### Variables permettant de tester l'environement de dévellopement ###
// MAC ou PC ?   Netscape ou IE ?

  var globale_plateforme = navigator.userAgent.toLowerCase();
  var globale_est_mac    = (globale_plateforme.indexOf("mac")!=-1);

  // A développer (pour d'autres navigateurs, pour les num de version)
  var globale_est_Netscape=(navigator.appName == "Netscape" );
  var globale_est_IE=(navigator.appName.substring(0,4) == "Micr");

// ### fin ACO MAC ###



function fctAbsente()
{
    alert("Page non disponible actuellement");
}

function alertB2B2C(codeMsg)
{
  var msg ="";

  switch (codeMsg)
  {
    case "CO":  msg = "Un champ obligatoire n'est pas renseigné"; break;
    case "CIV": msg = "Veuillez sélectionner votre civilité"; break;
    case "NaN": msg = "Ce champ doit être de type numérique !"; break;
    case "CON": msg = "Le numéro du contrat doit être un numérique"; break;
    case "CPN": msg = "Le code postal doit être numérique"; break;
    case "ADQ": msg = "Vous devez renseigner le titre ainsi que les descriptifs resumé et détaillé du nouvel objectif"; break;
    case "TEF": msg = "Un numéro de téléphone ou de fax ne peut comporter que des chiffres, des espaces, des points ou des parenthèses !"; break;
    case "CLT": msg = "Cette fonctionnalité n'est accessible que pour un utilisateur de type client !"; break;
    case "CLTVAL": msg = "Pour associer des contrats à un utilisateur, il doit être de type client !"; break;
    case "DATE": msg = "La date initiale doit être inférieure à la date finale!"; break;
    case "DOC": msg = "Vous devez sélectionner au moins un document à commander!"; break;
    default: msg = "code de message <" +codeMsg  + "> inconnu !"; break;
  }
  alert(msg);
  return;

}




//FLE 10/08/2001 : Methode permettant de résoudre le probleme de la persistence d'un Cookie
//de Session apporteur sur la Boutique Sécurisée (cf Docuementation sur la sécurité des Boutiques) :
//PARAMETRES :
//  - Le nom du cookie utilisé par WebLogic
//  - L'identifiant de session est passé dans la requete
//  - L'URL de redirection est passé dans la requete
function gestionSessionFromCookie(stNomCookieWebLogic, stIdSession, stURLCible) {


  //On met le bon id de Session dans le Cookie :
  var posVirgule   = document.cookie.indexOf(";");
  var apresVirgule = document.cookie.substring(posVirgule);

  //Nouvelle valeur du Cookie :
  document.cookie = stNomCookieWebLogic + "=" + stIdSession + ";path=/";

  //On redirige vers la servlet appelée :
  window.location = stURLCible;

}


  //************************************************************************
  //   remplaceVirgulePoint(svalue)
  //************************************************************************

  function remplaceVirgulePoint(svalue)
  {
    var newSvalue = "";
    for(i=0; i<svalue.length; i++)
    {
      if(svalue.charAt(i) == ',')
      {
        newSvalue = newSvalue + '.';
      }
      else
      {
         newSvalue = newSvalue + svalue.charAt(i);
      }
    }
    return newSvalue;
  }

  //************************************************************************
  //   remplacePointVirgule(svalue)
  //************************************************************************
  function remplacePointVirgule(svalue)
  {
    var newSvalue = "";
    for(i=0; i<svalue.length; i++)
    {
      if(svalue.charAt(i) == '.')
      {
        newSvalue = newSvalue + ',';
      }
      else
      {
         newSvalue = newSvalue + svalue.charAt(i);
      }
    }
    return newSvalue;
  }

//************************************************************************
// renvoi true si le control est de type numérique, sinon false
//************************************************************************
function isNumerique(control)
{

  if (isNaN(remplaceVirgulePoint(control.value)))
  {
    alertB2B2C("NaN");
    control.focus();
    return false;
  }
  else return true;
}

//************************************************************************
// renvoi true si le control est renseigné, sinon false
// RP 03/02/03 ne plus utiliser trim (fonctionne pas correctement)
//************************************************************************
function isObligatoireRempli(control)
{
  if (trim(control.value)=="")
  {
    alert("Merci de bien vouloir remplir tous les champs obligatoires du formulaire.");
    control.focus();
    return false;
  }
  else return true;
}

//************************************************************************
// controle la taille maxi d'un champs
//************************************************************************
function SupMaxLength(control, maxlen)
{
  if (trim(control.value).length>maxlen)
  {
    alert("La taille maximum de ce champs est de " + maxlen + " caract\u00E8res. (Taille actuelle : "+trim(control.value).length+")");
    control.focus();
    return false;
  }
  else return true;
}

//************************************************************************
// retourne vrai si la chaine comporte que des chiffres, des espaces,
// des points ou des parenthèses, sinon false
//************************************************************************
function isTelephoneFax(control)
{
  var lettre;
  var masque = "0123456789(). ";
  var i;

  for(i=0; i<control.value.length; i++)
  {
    lettre = control.value.substring(i,i+1);
    if  (masque.indexOf(lettre)==-1)
    {
      alertB2B2C("TEF");
      control.focus();
      return false;
    }
  }
  return true;
}


//************************************************************************
// renvoie true si au moins une case est cochée dans le tableBean
//************************************************************************
function isOneChecked(form, tableName, column)
{
  var nb=0, i=0;
  var coche = false ;
  var pasFini = true;

  while (getIndexChampByNamePos(form, tableName + "." + i + "." + column, nb)!=-1)
  {
    if (form.elements[nb].checked) coche = true;
    nb++;
  }

  return coche;
}


//************************************************************************
// efface les blancs en début et fin de chaine
//************************************************************************
function trim(str)
{
  var tmp = "";
  if (str) tmp = str;
 
  var i = tmp.length;

  while (i>0 && tmp.charAt(0)==" ")
  {
    tmp= tmp.substring(1, i);
    i= tmp.length;
  }

  while (i>0 && tmp.charAt(i-1)==" ")
  {
    tmp= tmp.substring(0, i-1);
    i= tmp.length;
  }

  return tmp;
}

//************************************************************************
// renvoit la clé associé à la valeur sélection d'une combo
//************************************************************************
function getSelectedKey(combo)
{
  var str = combo.options[combo.selectedIndex].value;
  var pos = str.indexOf("|");
  return str.substring(pos+1, str.length);
}

//************************************************************************
// demande une confirmation lors d'une suppresion
//************************************************************************
function ConfirmerSuppression()
{
  var agree = false ;

  if (globale_est_mac && globale_est_Netscape)
  {
    agree = confirm("Confirmer la suppression ?");
  }
  else
  {
    agree = confirm("Êtes vous sûr(e) de vouloir supprimer ?");
  }

  return (agree) ;
}


//************************************************************************
// vérifie que l'email saisi par l'utilisateur est correct syntaxiquement
//************************************************************************
function emailCheck (emailStr)
{
    if ((trim(emailStr)==""))
    {
      return true
    }

    var emailPat=/^(.+)@(.+)$/
    var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
    var validChars="\[^\\s" + specialChars + "\]"
    var quotedUser="(\"[^\"]*\")"
    var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
    var atom=validChars + '+'
    var word="(" + atom + "|" + quotedUser + ")"
    var accentPat1=/^(.+)é(.+)$/
    var accentPat2=/^(.+)è(.+)$/
    var accentPat3=/^(.+)à(.+)$/
    var accentPat4=/^(.+)ù(.+)$/
    var accentPat5=/^(.+)ç(.+)$/
       
    // NSE ne pas autoriser les accents dans l'email
    var accentArray=trim(emailStr).match(accentPat1)
    if (accentArray!=null) {
        // user is not valid
        alert("Votre adresse email est incorrecte : les caractères accentués ne sont pas autorisés.")
        return false
    }
    var accentArray=trim(emailStr).match(accentPat2)
    if (accentArray!=null) {
        // user is not valid
        alert("Votre adresse email est incorrecte : les caractères accentués ne sont pas autorisés.")
        return false
    }
    var accentArray=trim(emailStr).match(accentPat3)
    if (accentArray!=null) {
        // user is not valid
        alert("Votre adresse email est incorrecte : les caractères accentués ne sont pas autorisés.")
        return false
    }
    var accentArray=trim(emailStr).match(accentPat4)
    if (accentArray!=null) {
        // user is not valid
        alert("Votre adresse email est incorrecte : les caractères accentués ne sont pas autorisés.")
        return false
    }
    var accentArray=trim(emailStr).match(accentPat5)
    if (accentArray!=null) {
        // user is not valid
        alert("Votre adresse email est incorrecte : les caractères accentués ne sont pas autorisés.")
        return false
    }

    //FLE 20/09/2001 : Possibilité d'avoir un nom finissant par un "." :
    //var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
      var userPat=new RegExp("^" + word + "(\\." + "(" + word + ")*" + ")*$")

    var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
    var matchArray=trim(emailStr).match(emailPat)

    if (matchArray==null) {
    	alert("Votre adresse email est incorrecte (ex: MonAdress@LeDomaine.fr )")
    	return false;
    }
    var user=matchArray[1]
    var domain=matchArray[2]

    if (user.match(userPat)==null) {
        // user is not valid
        alert("Votre adresse email est incorrecte.")
        return false
    }

    var IPArray=domain.match(ipDomainPat)
    if (IPArray!=null) {
    	  for (var i=1;i<=4;i++) {
    	    if (IPArray[i]>255) {
    	        alert("Votre adresse mail est incorrecte")
    		return false
    	    }
        }
        return true
    }

    var domainArray=domain.match(domainPat)
    if (domainArray==null) {
    	alert("votre adresse email est incorrecte")
        return false
    }

    var atomPat=new RegExp(atom,"g")
    var domArr=domain.match(atomPat)
    var len=domArr.length

/* RP 22/03/04 enleve test partie domaine, peut donner des problèmes
   if (domArr[domArr.length-1].length<2 ||
        domArr[domArr.length-1].length>3) {
       alert("L'adresse doit se terminer par un nom de domaine en trois lettres, ou un pays ")
       return false
    }

    if (len<2) {
       var errStr="Votre nom de domaine est incorrect"
       alert(errStr)
       return false
    }
*/
  return true;
}

//************************************************************************
// cree une date AAAAMMJJ a partir d'une date JJ/MM/AAAA
//************************************************************************
function dateFromJJMMAAAAToAAAAMMJJ(sDate)
{
	var theJour,theMois,theAnnee;
	var theStepA,theStepB;

	theStepA = sDate.indexOf("/");
	theJour  = sDate.substring(0, theStepA);
	theStepA = theStepA+1;
	theStepB = sDate.indexOf("/", theStepA);
	theMois  = sDate.substring(theStepA, theStepB);
	theStepA = theStepB+1;
	theAnnee = sDate.substring(theStepA, sDate.length);
	return theAnnee + theMois + theJour;
}



//************************************************************************
// compare 2 dates
//************************************************************************
function compareDate(sDate1, sDate2)
{
	var sDateInv1, sDateInv2

	sDateInv1 = dateFromJJMMAAAAToAAAAMMJJ(sDate1);
	sDateInv2 = dateFromJJMMAAAAToAAAAMMJJ(sDate2);

	if (sDateInv1 < sDateInv2)
	{
		return -1;
	}
	else if (sDateInv1 > sDateInv2)
	{
		return 1;
	}
	else
	{
		return 0;
	}
}



//************************************************************************
// Verifie si l'utilisateur saisit bien une date au format DD/MM/YYYY
//************************************************************************
function isDateJJMMAAAA(aJJ,aMM,aAAAA,sDate)
{
    var longueur = sDate.length;
    if (longueur != 10)
    {
      alert('Veuillez saisir la date au format JJ/MM/AAAA !');
      return false;
    }
	else if (isNaN(aAAAA) || aAAAA < 1900 || aAAAA > 2100)
    {
		alert("l'ann\u00E9e de la date " + sDate + " doit \u00EAtre comprise entre 1900 et 2100!");
		return false;
	}
	else if (aMM==1 || aMM==3 || aMM==5 || aMM==7 || aMM==8 || aMM==10 || aMM==12)
	{
		if (aJJ<1 || aJJ>31)
      	{
			alert("la date " + sDate + " est invalide!");
			return false;
		}
		else
			return true;
	}
	else if (aMM==4 || aMM==6 || aMM==9 || aMM==11)
	{
		if (aJJ<1 || aJJ>30)
      	{
			alert("la date " + sDate + " est invalide!");
			return false;
		}
		else
			return true;
	}
	else if (aMM==2)
	{
	    var nbj =28;
	    if (isBissextile(aAAAA)) nbj=29;

		if (aJJ<1 || aJJ>nbj)
      	{
			alert("la date " + sDate + " est invalide!");
			return false;
		}
		else
			return true;
	}
	else
	{
		alert("la date " + sDate + " est invalide!");
		return false;
	}
}

/*
* renvoie true si l'annee en parametre est bissextile
*/
function isBissextile(annee)
{
  if (annee % 4 == 0)
  {
  	if ((annee % 100 ==0) && (annee%400!=0))
	  return false;
	else
	  return true;
  }
  else
  	return false;
}

//************************************************************************
// Verifie si l'utilisateur saisit bien une date au format DD/MM/YYYY
//************************************************************************
function isDate(sDate)
{
	var theStepA,theStepB;
	var theJour,theMois,theAnnee;
	var sDateCopy = sDate;

	theStepA = sDate.indexOf("/");
	theJour  = sDate.substring(0, theStepA);
	theStepA = theStepA+1;
	theStepB = sDate.indexOf("/", theStepA);
	theMois  = sDate.substring(theStepA, theStepB);
	theStepA = theStepB+1;
	theAnnee = sDate.substring(theStepA, sDate.length);

	return (isDateJJMMAAAA(parseInt(theJour,10), parseInt(theMois,10), parseInt(theAnnee,10), sDateCopy));

}


//************************************************************************
// recherche l'index d'un champ nomme "champName" dans le formulaire "form"
// a partir du debut du formulaire
//************************************************************************
function getIndexChampByName(form, champName)
{
  return getIndexChampByNamePos(form, champName, 0);
}

//************************************************************************
// recherche l'index d'un champ nomme "champName" dans le formulaire "form"
// a partir de la position de depart "posDepart"
//************************************************************************
function getIndexChampByNamePos(form, champName, posDepart)
{
  var nb = posDepart;
  var pasFini = true;

  //on cherche l'index de la 1ère checkbox du tableau des contrats trouvés
  while (pasFini && nb<form.elements.length)
  {
    if (champName == form.elements[nb].name)
      pasFini = false;
    else
      nb++;
  }

  if (nb<form.elements.length)
    return nb;
  else
    return -1;
}

//************************************************************************
// renvoie la chaine modifiée avec les caractères accentués au format HTML
//************************************************************************
function htmlEncode(str)
{
  if (str==null)
    return null;
  else
  {	
        str = str.replace(/'/g, "&rsquo;");        // ' - apostrophe
        str = str.replace(/"/g, "\u0022");       // " - double-quote
        str = str.replace(/©/g,	"&copy;");	// © - copyright
        str = str.replace(/®/g,	"&reg;");	// ® - registered trademark
        str = str.replace(/£/g, "\u00A3");	// £
        str = str.replace(/À/g,	"&Agrave;");	// À - uppercase A, grave accent
        str = str.replace(/Á/g,	"&Aacute;");	// Á - uppercase A, acute accent
        str = str.replace(/À/g,	"&Agrave;");	// À - uppercase A, grave accent
        str = str.replace(/Á/g,	"&Aacute;");	// Á - uppercase A, acute accent
        str = str.replace(/Â/g,	"&Acirc;");	// Â - uppercase A, circumflex accent
        str = str.replace(/Ã/g,	"&Atilde;");	// Ã - uppercase A, tilde
        str = str.replace(/Ã/g,	"&Auml;");	// Ã - uppercase A, umlaut
        str = str.replace(/Ã/g,	"&Aring;");	// Ã - uppercase A, ring
        str = str.replace(/Æ/g,	"&AElig;");	// Æ - uppercase AE
        str = str.replace(/Ç/g,	"&Ccedil;");	// Ç - uppercase C, cedilla
        str = str.replace(/È/g,	"&Egrave;");	// È - uppercase E, grave accent
        str = str.replace(/É/g,	"&Eacute;");	// É - uppercase E, acute accent
        str = str.replace(/Ê/g,	"&Ecirc;");	// Ê - uppercase E, circumflex accent
        str = str.replace(/Ë/g,	"&Euml;");	// Ë - uppercase E, umlaut
        str = str.replace(/Ì/g,	"&Igrave;");	// Ì - uppercase I, grave accent
        str = str.replace(/Í/g,	"&Iacute;");	// Í - uppercase I, acute accent
        str = str.replace(/Î/g,	"&Icirc;");	// Î - uppercase I, circumflex accent
        str = str.replace(/Ï/g,	"&Iuml;");	// Ï - uppercase I, umlaut
        str = str.replace(/Ð/g,	"&ETH;");	// Ð - uppercase Eth, Icelandic
        str = str.replace(/Ñ/g,	"&Ntilde;");	// Ñ - uppercase N, tilde
        str = str.replace(/Ò/g,	"&Ograve;");	// Ò - uppercase O, grave accent
        str = str.replace(/Ó/g,	"&Oacute;");	// Ó - uppercase O, acute accent
        str = str.replace(/Ô/g,	"&Ocirc;");	// Ô - uppercase O, circumflex accent
        str = str.replace(/Õ/g,	"&Otilde;");	// Õ - uppercase O, tilde
        str = str.replace(/Ö/g,	"&Ouml;");	// Ö - uppercase O, umlaut
        str = str.replace(/Ø/g,	"&Oslash;");	// Ø - uppercase O, slash
        str = str.replace(/Ù/g,	"&Ugrave;");	// Ù - uppercase U, grave accent
        str = str.replace(/Ú/g,	"&Uacute;");	// Ú - uppercase U, acute accent
        str = str.replace(/Û/g,	"&Ucirc;");	// Û - uppercase U, circumflex accent
        str = str.replace(/Ü/g,	"&Uuml;");	// Ü - uppercase U, umlaut
        str = str.replace(/Ý/g,	"&Yacute;");	// Ý - uppercase Y, acute accent
        str = str.replace(/Þ/g,	"&THORN;");	// Þ - uppercase THORN, Icelandic
        str = str.replace(/ß/g,	"&szlig;");	// ß - lowercase sharps, German
        str = str.replace(/à/g,	"&agrave;");	// à - lowercase a, grave accent
        str = str.replace(/á/g,	"&aacute;");	// á - lowercase a, acute accent
        str = str.replace(/â/g,	"&acirc;");	// â - lowercase a, circumflex accent
        str = str.replace(/ã/g,	"&atilde;");	// ã - lowercase a, tilde
        str = str.replace(/ä/g,	"&auml;");	// ä - lowercase a, umlaut
        str = str.replace(/å/g,	"&aring;");	// å - lowercase a, ring
        str = str.replace(/æ/g,	"&aelig;");	// æ - lowercase ae
        str = str.replace(/ç/g,	"&ccedil;");	// ç - lowercase c, cedilla
        str = str.replace(/è/g,	"&egrave;");	// è - lowercase e, grave accent
        str = str.replace(/é/g,	"&eacute;");	// é - lowercase e, acute accent
        str = str.replace(/ê/g,	"&ecirc;");	// ê - lowercase e, circumflex accent
        str = str.replace(/ë/g,	"&euml;");      // ë - lowercase e, umlaut
        str = str.replace(/ì/g,	"&igrave;");	// ì - lowercase i, grave accent
        str = str.replace(/í/g,	"&iacute;");	// í - lowercase i, acute accent
        str = str.replace(/î/g,	"&icirc;");	// î - lowercase i, circumflex accent
        str = str.replace(/ï/g,	"&iuml;");	// ï - lowercase i, umlaut
        str = str.replace(/ð/g,	"&eth;");	// ð - lowercase eth, Icelandic
        str = str.replace(/ñ/g,	"&ntilde;");	// ñ - lowercase n, tilde
        str = str.replace(/ò/g,	"&ograve;");	// ò - lowercase o, grave accent
        str = str.replace(/ó/g,	"&oacute;");	// ó - lowercase o, acute accent
        str = str.replace(/ô/g,	"&ocirc;");	// ô - lowercase o, circumflex accent
        str = str.replace(/õ/g,	"&otilde;");	// õ - lowercase o, tilde
        str = str.replace(/ö/g,	"&ouml;");	// ö - lowercase o, umlaut
        str = str.replace(/ø/g,	"&oslash;");	// ø - lowercase o, slash
        str = str.replace(/ù/g,	"&ugrave;");	// ù - lowercase u, grave accent
        str = str.replace(/ú/g,	"&uacute;");	// ú - lowercase u, acute accent
        str = str.replace(/û/g,	"&ucirc;");	// û - lowercase u, circumflex accent
        str = str.replace(/ü/g,	"&uuml;");	// ü - lowercase u, umlaut
        str = str.replace(/ý/g,	"&yacute;");	// ý - lowercase y, acute accent
        str = str.replace(/þ/g,	"&thorn;");	// þ - lowercase thorn, Icelandic
        str = str.replace(/ÿ/g,	"&yuml;");	// ÿ - lowercase y, umlaut
        str = str.replace(/€/g,"&euro;");	// ÿ - lowercase y, umlaut

    return str;
  }
}


//************************************************************************
// fait un alert avec accents en format unicode
//************************************************************************
function ualert(myString) {
  uString = transformunicode(myString);
  alert(uString);
}

//************************************************************************
// fait un confirm avec accents en format unicode
//************************************************************************
function uconfirm(myString) {
  uString = transformunicode(myString);
  return confirm(uString);
}

//************************************************************************
// transforme les caractères spéciaux en format unicode
//************************************************************************
function transformunicode(myString) {
  newString = "";

  for (var i=0; i < myString.length; i++) {
    myChar = myString.charCodeAt(i);
//    if (myChar > 65535) break;
    if (myChar < 33 || myChar>255) {
      // do not encode
      newString += myString.charAt(i);
    } else {
      myUnicodeStr = '"' + "\\u00" + hexfromdec(myChar) + '"';
//        alert("unicodestr = " + myChar + " "+ myUnicodeStr);
        newString +=  eval(myUnicodeStr);
    }
  }
  return newString;
}

//************************************************************************
// transforme un numéro en hex
//************************************************************************
function hexfromdec(num) {
  if (num > 65535) { return ("err!") }
// on a le N°1
  first = Math.floor(num/4096);
  temp1 = num - first * 4096;
// on a le N°2
  second = Math.floor(temp1/256);
  temp2 = temp1 - second * 256;
// on a le N°3
  third = Math.floor(temp2/16);
  fourth = temp2 - third * 16;
// on a le N°4
  return (""+getletter(third)+getletter(fourth));
}

function getletter(num) {
  if (num < 10) {
    return num;
  } else {
    if (num == 10) { return "A" }
    if (num == 11) { return "B" }
    if (num == 12) { return "C" }
    if (num == 13) { return "D" }
    if (num == 14) { return "E" }
    if (num == 15) { return "F" }
  }
}


//************************************************************************
//   function ouvrirPopupScrollbars(fichier, width, height)
//************************************************************************
function ouvrirPopupScrollbars(fichier, width, height) {
  if (typeof(width) == 'undefined') width=600;
  if (typeof(height) == 'undefined') height=500;
  var param='toolbar=0,location=0,directories=0,menuBar=0,scrollbars=1,resizable=1,width=' + width + ',height=' + height +',left=100,top=100';

  if (fichier.substring(fichier.length,fichier.length-3)=="xls"){
    menubar="yes";
  }
  window.open(fichier,'popup_perso', param);
}

//************************************************************************
//   function OpenWin(lien,nom,largeur,hauteur)
//************************************************************************
function OpenWin(lien,nom,largeur,hauteur) {
  var left=(screen.width-largeur)/2;
  var top=(screen.height-hauteur)/2;

  // fichier excel -> menu activé
  var menubar="no";
  if (lien.substring(lien.length,lien.length-3)=="xls"){
    menubar="yes";
  }

  if (lien.substring(lien.length,lien.length-3)=="csv"){
    menubar="yes";
  }

  var param='width='+largeur+',height='+hauteur+',resizable=yes,scrollbars=yes,status=yes,menubar='+menubar+',toolbar=no,personalbar=no,left='+left+',top='+top;
  var win = window.open(lien, nom,param);
}

//************************************************************************
//   function ouvrirPopupFixe(lien,nom,largeur,hauteur)
//************************************************************************
function ouvrirPopupFixe(lien,nom,largeur, hauteur)
{
  if (typeof(largeur) == 'undefined') width=550;
  if (typeof(hauteur) == 'undefined') height=400;
  var left=(screen.width-largeur)/2;
  var top=(screen.height-hauteur)/2;
  var param='width='+largeur+',height='+hauteur+',toolbar=0,location=0,directories=0,menuBar=0,scrollbars=0,resizable=0,left='+left+',top='+top;
  var win = window.open(lien, nom,param);
}

//************************************************************************
//   function OpenWinResize(lien,nom,largeur,hauteur)
//   ACO - novembre 2001 : ouvre une fenêtre, retaille la fenêtre
//   principale afin d'avoir les 2 fenêtres sous les yeux simultanément
//************************************************************************
function OpenWinResize(lien,nom) {
  var largeur=screen.availWidth;
  var hauteur=screen.availHeight;
  var top=0;
  var left=0.5*largeur;

  // retaille de la fenetre principale
  this.resizeTo(0.5*largeur,hauteur);
  // ouverture de la fenetre secondaire
  var param='width='+0.5*largeur+',height='+hauteur+',resizable=yes,scrollbars=yes,status=no,menubar=no,toolbar=no,personalbar=no,left='+left+',top='+top;
  var win=window.open(lien, nom, param);
  win.resizeTo(0.5*largeur,hauteur);
}

//************************************************************************
//   function wait4Me( addresse, texte a afficher)
//   LMI - Septembre 2002 : ouvre une fenêtre d'attente avec un message paramétrable
//   et redirection vers l'adresse spécifiée
//************************************************************************
function wait4Me( address, txtAttente) {
  myUrl = '/b2b2c/jsp/commun/attente.jsp?alive=true&txtattente='+escape(txtAttente);
  OpenWin( myUrl,'attente',400,130);

  /* gestion des formulaires*/
  if (typeof(address) == 'string') {
    document.location=address;
  } else {
    address.submit();
  }
}


//************************************************************************
//   function creerPageFractal(urlFractal,codeApporteur)
//   RP 27/09/2002  ouvre une fenêtre vers Fractal
//************************************************************************
function creerPageFractal(urlFractal,codeApporteur) {
  var largeur=screen.availWidth-300;
  var hauteur=screen.availHeight-150;

  var param='width=300,height=150,resizable=yes,scrollbars=yes,status=no,menubar=no,toolbar=no,personalbar=no,left='+0.5*largeur+',top='+0.5*hauteur;
  var urlComplet = urlFractal + codeApporteur;
  window.open(urlComplet, "Vue_contrats", param);
}


//************************************************************************
//   function creerPageGaelia(urlGaelia)
//   RP 27/09/2002  ouvre une fenêtre vers Gaelia
//************************************************************************
function creerPageGaelia(urlGaelia) {
  var largeur=screen.availWidth-800;
  var hauteur=screen.availHeight-800;

  var param='width=800,height=710,resizable=yes,scrollbars=yes,status=no,menubar=no,toolbar=no,personalbar=no,left='+0.5*largeur+',top='+0.5*hauteur;
  var urlComplet = urlGaelia;
  window.open(urlGaelia, "Gaelia", param);
}
function creerPageExterne(urlBoursorama) {
  var largeur=screen.availWidth-800;
  var hauteur=screen.availHeight-800;

  var param='width=800,height=710,resizable=yes,scrollbars=yes,status=no,menubar=no,toolbar=no,personalbar=no,left='+0.5*largeur+',top='+0.5*hauteur;
  var urlComplet = urlBoursorama;
  window.open(urlBoursorama, "Boursorama", param);
}

function testIESignatureElectronique() {
  if (globale_est_mac || (! globale_est_IE)) {
    alert("Attention : Pour la signature \u00E9lectronique vous devez \u00EAtre \u00E9quip\u00E9 d'un PC avec un syst\u00E8me d'exploitation Windows, et d'un navigateur Internet Explorer 5.0.1 (ou version sup\u00E9rieure)");
    return false;
  }
  return true;
}

/**
* fonction d'initialisation specifique Boursorama
* Cette fonction permet de redimensionner l'iFramde et 
* de se positionner en haut de page
* (appele dans body onload)
*/
function hautPageBoursorama()
{
  var location = document.domain.toString();
  if (location.match(".boursorama.com")) {
    document.domain="boursorama.com";
    parent.location.hash="hautdepage";

    if (parent.adjustIFrameSize) parent.adjustIFrameSize(window);
  } 
}

// body onload pour LinXea
function hautPageLinxea()
{
  var location = document.domain.toString();
  if (location.match(".linxea.com")) {
    document.domain="linxea.com";
    parent.location.hash="hautdepage";
  } 
}


  
    function confirmSupp(message,url)
  {
      var a = false;
      a= confirm (message);
      if (a)
        window.location = url;
  }
 