<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>
  <head>
    <title>OpenOffice.org Conference 2005 (OOoCOn 2005)</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="Content-Style-Type" content="text/css">

<style type="text/css">

.it_nav2 {
    font-size: .8em;
    font-weight:bold;
    background-color: #DEE4EE;
    background-image: url("/branding/images/test-menu-1.gif");
    background-repeat: repeat-y;
    background-position: top right;
    color: #06348C;
    border-bottom: 0px none;
    border-right: 0px none;
}

.it_navtest {
    font-size: .8em;
    font-weight:bold;
    background-color: #FFFFFF;
    background-image: url("/branding/images/fading-blue.gif");
    background-repeat: repeat-y;
    background-position: top left;
    color: #032360;
    border-bottom: 0px none;
    border-right: 0px none;
    padding-top: 0.5em;
}

.it_lang {
    font-size: .8em;
    font-weight:bold;
    text-align: left;
    background-color: #FFFFFF
    color: #032360;
    border-bottom: 0px none;
    border-right: 0px none;
}

 td.menucell {vertical-align: top; text-align: right; width: 130px;}
 table.menu {text-align: left; height: 168px;}

</style>
  </head>

  <body>
    <table border="0" cellspacing="4">
      <tbody>
        <tr>
          <td>
<!-- content start -->
<img src="/branding/images/OOoCon2005_logo.gif" alt="Openoffice.org Conference" id="ooologo">
   <h3>OpenOffice.org Conference (OOoCon 2005)<br>
      <br>
	Sponsors and Exhibitors</h3>
	<p>
      <strong>How to become a Sponsor or Exhibitor</strong><br>
      The OpenOffice.org Conference 2005 is your opportunity to give
something back to the community by sponsoring the event. Your
sponsorship will also provide you with global visibility for
your OpenOffice.org related products and services. These are
the sponsorship options:
      <ul><li> Premium: A large logo on all marketing materials (fliers, printouts, posters, 
      websites, CDs), a link to sponsor's website from the official conference 
      website, sponsor appearance on press conference, special note of gratitude 
      in conference conclusion, exhibition space, publication of sponsor's text 
      (news) in the online news during the conference, publication of short presentation 
      text on conference webpage and a VIP ticket for participation on all conference 
      events.<br>
      The expected donation by a premium sponsor is 3500 EUR min.</li>
      </ul>
      <ul><li> Gold: Logo on conference media materials (posters, printouts, website), 
      exhibition place, note of gratitude at the conclusion of conference.<br>
      The expected donation for a gold sponsor is 1000 EUR.</li></ul>
      <ul><li>Silver: Small logo on posters, publication footers and official conference 
      website.<br>
      The expected donation for a silver sponsor is 500 EUR.</li></ul> 
      <strong>Material sponsor, media sponsor, technical sponsor</strong><br>
      If you would wish to contribute to the conference in a different manner, 
      there are many other options to offer. Some of the potential sponsorships 
      include renting technical equipment (computers, projectors, audio&amp;video 
      equipment), media coverage of the event in the form of free commercials 
      and ads, or offering Your services for the time of the conference.<br>
      This will give You a logo presence on all marketing materials including 
      the webpage together with a right to distribute your marketing materials 
      at the conference.<br><br><br>
      <strong>How to apply</strong><br>
      If you would like to sponsor OooCon2005 in one of ways mentioned above, 
      plese send an e-mail with subject “Premium”, “Gold”, “Silver,” or “Media” 
      to<br>
	  <a href="mailto:confsponsor@openoffice.org"><font color="#0000ff"> confsponsor@openoffice.org</font></a><br><br>
      The email with your exhibitor application should include the following information:
      <ul>
      <li>Company Name </li>
      <li>Postal Address </li>
     <li>Contact Name </li>
     <li>Email Address </li>
     <li>Contact Telephone Number </li>
     <li>Company Logo </li>
     <li>URL of Home Page </li>
     <li>Title of Exhibit (if applyable)</li>
      <li>Description of Exhibit (100 words max., if applyable)</li>
       <li>
      Special Requirements beyond Table/Desk (e.g. Internet)</li></ul><br><br>
      For additional information please send an email to confsponsor@openoffice.org.</td>
<!-- content end -->
          </td>

          <td class="menucell">
            <table class="menu" border="0" cellpadding="4" cellspacing=
            "4">
              <tbody>
                <tr>
                  <td class="it_lang"><a href="/ooocon2005/index.ita.html">ITA</a>
                  - <a href="/ooocon2005/index.html">ENG</a> - <a href=
                  "/ooocon2005/index.sl.html">SL</a> </td>
                </tr>

                <tr>
                  <td>&nbsp;</td>
                </tr>

                <tr>
                  <td class="it_navtest">What is OOoCon</td>
                </tr>

                <tr>
                  <td><a href="/ooocon2005/index.html">Home</a>
		  <br>&nbsp;
		  </td>
                </tr>

                <tr>
                  <td class="it_navtest">How to participate</td>
                </tr>

                <tr>
                  <td><a href="/ooocon2005/cfp.html">Call For Papers</a> 
                  <br>
                   <a href="/ooocon2005/sponsorship.html">Sponsors and
                  Exhibitors</a> 
                  <br>
                   <a href="/ooocon2005/registration.html">Registration</a> 
                  <br>&nbsp;
                   </td>
                </tr>
                <!--  <tr>
                                      <td class="it_navtest">Program</td>
                                    </tr>
                                    <tr>
                                      <td><a href="/ooocon2005/index.html">Program Overview</a><br>
                                        <a href="/ooocon2005/index.html">Accepted Papers</a><br>
                                      </td>
                                    </tr> -->

                <tr>
                  <td class="it_navtest">Travel Information</td>
                </tr>

                <tr>
                  <td valign="top">
<a href="/ooocon2005/travel.html">Location</a>
                  <br>
                   <a href="/ooocon2005/travel.html#travel">Travel</a>
		   <br>
                   <a href="accommodation.html">Accommodation</a>
		<br>
		   &nbsp;
		   </td>
                </tr>
              </tbody>
            </table>
          </td>
        </tr>
      </tbody>
    </table>
    <hr>

    <p>$Revision: 1.12 $</p>
  </body>
</html>

