<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>OpenOffice.org -Invitation &agrave; contribuer</title>
  <style type="text/css">
/*<![CDATA[*/
<!--
@import url("/branding/css/elements.css");
@import url('style/display-none.css');

-->
/*]]>*/
  </style>
</head>
<body>
<script src="download.js" type="text/javascript">
</script>
<script type="text/javascript">
/* <![CDATA[ */

function replaceAll( str, from, to ) {
    var idx = str.indexOf( from );

    while ( idx > -1 ) {
        str = str.replace( from, to );
        idx = str.indexOf( from );
    }

    return str;
}

  function cont() {
    s = window.location.search;
    i = s.search( "download=p2p" );
    if ( i > -1 ) {
        newlocation = "http://distribution.openoffice.org/p2p/";
    } else {
      newlocation = "http://openoffice.bouncer.osuosl.org/" + s;
    }
    //window.location.href= newlocation;

    newlocation = replaceAll( newlocation, '&', '[[amp]]' );
    newlocation = replaceAll( newlocation, '[[amp]]', '&amp;' );
    return newlocation;
  }

  function donate() {
    window.open("http://contributing.openoffice.org/donate.html","_blank");
  }

  function writeLinks() {
    document.write('<a href="'+cont()+'">Start download...</a><br /><small>Your OpenOffice.org software will be downloaded from<br/>' + cont() + '</small>');
  }

  function getTupel( href ) {
      var retVal;
      if ( href.indexOf( "?" ) > 0 && href.indexOf( "http://openoffice.bouncer.osuosl.org/" ) == 0 ) {
        if ( href.indexOf( "product=" ) > 0 && href.indexOf( "os=" ) > 0 && href.indexOf( "lang=" ) > 0 && href.indexOf( "version=" ) > 0 ) {
          var s = (href.split( "?" )[1]).split( "&amp;" );
          var product, os, lang, version;
          for (var i=0; i < s.length; i++ ) {
            if ( s[i].indexOf( "product=" ) == 0 ) {
              product = s[i].split( "=" )[1];
              if ( product.indexOf( "OpenOffice.org" ) == 0 ) {
                product = "OOo";
              }
            } else if ( s[i].indexOf( "os=" ) == 0 ) {
              os = s[i].split( "=" )[1];
            } else if ( s[i].indexOf( "lang=" ) == 0 ) {
              lang = s[i].split( "=" )[1];
            } else if ( s[i].indexOf( "version=" ) == 0 ) {
              version = s[i].split( "=" )[1];
            }
          }
          retVal = product + " " + version + "-" + os + "-" + lang + "-" + version;
        }
      }
      return retVal;
  }

  function getProduct( href ) {
      var retVal = "";
      if ( href.indexOf( "?" ) > 0 && href.indexOf( "http://openoffice.bouncer.osuosl.org/" ) == 0 ) {
        if ( href.indexOf( "product=" ) > 0 && href.indexOf( "os=" ) > 0 && href.indexOf( "lang=" ) > 0 && href.indexOf( "version=" ) > 0 ) {
          var s = (href.split( "?" )[1]).split( "&amp;" );
          var product, version;
          for (var i=0; i < s.length; i++ ) {
            if ( s[i].indexOf( "product=" ) == 0 ) {
              product = s[i].split( "=" )[1];
              if ( product.indexOf( "OpenOffice.org" ) == 0 ) {
                product = "OOo";
              }
            } else if ( s[i].indexOf( "version=" ) == 0 ) {
              version = s[i].split( "=" )[1];
            }
          }
          retVal = product + " " + version;
        }
      }
      return retVal;
  }

  function getLang( href ) {
      var retVal = "";
      if ( href.indexOf( "?" ) > 0 && href.indexOf( "http://openoffice.bouncer.osuosl.org/" ) == 0 ) {
        if ( href.indexOf( "product=" ) > 0 && href.indexOf( "os=" ) > 0 && href.indexOf( "lang=" ) > 0 && href.indexOf( "version=" ) > 0 ) {
          var s = (href.split( "?" )[1]).split( "&amp;" );
          for (var i=0; i < s.length; i++ ) {
            if ( s[i].indexOf( "lang=" ) == 0 ) {
              retVal = s[i].split( "=" )[1];
            }
          }
        }
      }
      return retVal;
  }

  function getOS( href ) {
      var retVal = "";
      if ( href.indexOf( "?" ) > 0 && href.indexOf( "http://openoffice.bouncer.osuosl.org/" ) == 0 ) {
        if ( href.indexOf( "product=" ) > 0 && href.indexOf( "os=" ) > 0 && href.indexOf( "lang=" ) > 0 && href.indexOf( "version=" ) > 0 ) {
          var s = (href.split( "?" )[1]).split( "&amp;" );
          for (var i=0; i < s.length; i++ ) {
            if ( s[i].indexOf( "os=" ) == 0 ) {
              retVal = s[i].split( "=" )[1];
            }
          }
        }
      }
      return retVal;
  }

  function getVersion( href ) {
      var retVal = "";
      if ( href.indexOf( "?" ) > 0 && href.indexOf( "http://openoffice.bouncer.osuosl.org/" ) == 0 ) {
        if ( href.indexOf( "product=" ) > 0 && href.indexOf( "os=" ) > 0 && href.indexOf( "lang=" ) > 0 && href.indexOf( "version=" ) > 0 ) {
          var s = (href.split( "?" )[1]).split( "&amp;" );
          for (var i=0; i < s.length; i++ ) {
            if ( s[i].indexOf( "version=" ) == 0 ) {
              retVal = s[i].split( "=" )[1];
            }
          }
        }
      }
      return retVal;
  }

/* ]]> */
</script>
<noscript><div class="notice"><p>Your browser does not seem to allow
for Javascript on websites. This technique is used on this website for
presenting the actual download link on this page. If you want to
download OpenOffice.org, go to its <a href="index.html">download
page</a>, and you will skip this page. Our apologies for the
inconvenience.</p>
</div>
</noscript>
<h1>Vous &ecirc;tes sur le point de t&eacute;l&eacute;charger OpenOffice.org...</h1>
<p>Lorsque vous aurez appuy&eacute; sur le bouton "Continuer le
t&eacute;l&eacute;chargement" ci-dessous, vous serrez redirig&eacute;
pour commencer le t&eacute;l&eacute;chargement que vous avez
s&eacute;lectionn&eacute;.
</p>
<h2>Merci de contribuer !</h2>
<p>Avant de d&eacute;buter le t&eacute;l&eacute;chargement, nous
voudrions vous rappeler quelques fa&ccedil;ons de contribuer.
OpenOffice.org vous est fourni gratuitement et vous avez le droit de
redistribuer le logiciel. Nous d&eacute;pendons des personnes qui
veulent bien contribuer de leur temps et de leur soutien au projet pour
assurer que OpenOffice.org restera libre et disponible &agrave; tous
sans co&ucirc;ts.
</p>

<h2>Vous pouvez aider</h2>
<p>Les options de base consistent en <a target="_blank" href="about-contributing.html">Contribuer au projet</a>,
 <a target="_blank" href="contact-forums.html">Joindre les listes et forum</a>,
 <a target="_blank" href="http://wiki.services.openoffice.org/wiki/Fr.openoffice.org/IssueTracker">Rapporter des Bugs &amp; Issues</a>, <a target="_blank" href="http://marketing.openoffice.org/">Repr&eacute;senter</a>&nbsp;OpenOffice.org et enfin
 <a target="_blank" href="http://contributing.openoffice.org/donate.html">Donner de l'argent</a>.
Vous pouvez &eacute;galement commander des "goodies" dans <a href="http://oooboutique.manager-pro.com/">notre boutique</a> (mouettes en peluche, T-shirts, etc.) vous y attendent.<br>
(<i>Note: les liens ouvriront une nouvelle fen&ecirc;tre.</i>)
</p>
<h2>Des probl&egrave;mes ?</h2>
<p>
Si vous rencontrez des probl&egrave;mes lors du t&eacute;l&eacute;chargement <a href="mailto:sgauti@openoffice.org">contactez-nous</a>. Les&nbsp;<a target="_blank" href="Documentation/Guides/Indexguide.html">Instructions d'installation</a> vous aideront lors des premi&egrave;res &eacute;tapes.
<br>
</p>
<p>Nous vous remercions du soutien apport&eacute; &agrave; notre projet.
</p>
<p>

<script type="text/javascript">
/* <![CDATA[ */

  s_linkType = "d";
  s_linkName = "ooo:" + getTupel( cont() );
  s_events = "event7";
  s_products = "Downloaded Products;" + getProduct( cont() ) + " Download";
  s_eVar3 = "ooo";
  s_eVar8 = getTupel( cont() );
  s_prop19 = getOS( cont() );
  s_prop20 = getLang( cont() );
  s_prop21 = getVersion( cont() );
  s_linkTrackVars = "events,products,eVar3,eVar8,prop19,prop20,prop21";
  s_linkTrackEvents = "event7";

  document.write( '<a '
    + 'onClick="s_lnk=s_co(this);s_gs(s_account);" '
    + 'href="'
    + cont()
    + '"class="button" id="buttondownload" title="Télécharger la dernière version de OpenOffice.org!" name="buttondownload"><span>Continuer le<p/>téléchargement</span></a>' );

/* ]]> */
</script>
</p>
<p>Si le t&eacute;l&eacute;chargement ne fonctionne pas, merci de&nbsp;
  <a href="http://distribution.openoffice.org/mirrors/#mirrors">s&eacute;lectionner manuellement un miroir proche</a>. Vous trouverez la version dans le sous r&eacute;pertoire <strong>stable</strong>
</p>
</body>
</html>
