<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>
        Савети за OpenOffice.org са странице „Компјутер библиотеке“
    </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" media="screen, projection">
/*<![CDATA[*/
<!--
  @import url(/styles/DeNoNav.css);
-->
/*]]>*/
    </style>
    <style type="text/css">
        #bodycol { width: 90%; }
        h2 { font-weight: bold; }
        #kombib_ooo3_saveti .gsc-control { width : 800px; }
        #kombib_ooo3_saveti .gsc-tabsArea, #kombib_ooo3_saveti .gsc-resultsHeader, #kombib_ooo3_saveti_form { display: none; }
    </style>

    <script src="http://www.google.com/jsapi?key=ABQIAAAAlBih6aj0-CYKsCbDQVr1eBS-K0yiKPqUdQ9Vc4eSYp5UX4aOKxRlyCYM0Zt78huld2Ak1Z3Sus8sMQ" type="text/javascript"></script>
    <script language="Javascript" type="text/javascript">
    //<![CDATA[

    google.load("search", "1");

    function OnLoad() {
      var searchControl = new google.search.SearchControl();
      searchControl.setResultSetSize(google.search.Search.LARGE_RESULTSET);

      var options = new google.search.DrawOptions();
      options.setDrawMode(google.search.SearchControl.DRAW_MODE_TABBED);
      options.setSearchFormRoot(document.getElementById("kombib_ooo3_saveti_form"));

      searchControl.addSearcher(new google.search.WebSearch());

      searchControl.draw(document.getElementById("kombib_ooo3_saveti"), options);
      searchControl.execute("site:saveti.kombib.rs intitle:OpenOffice");
    }
    google.setOnLoadCallback(OnLoad);

    //]]>
    </script>

  </head>
<body>

<h2>Савети објављени на страници „Компјутер библиотеке“</h2>
<p>Издавачко предузеће „<a href="http://www.kombib.rs">Компјутер библиотека</a>“
<a href="http://saveti.kombib.rs/saveti_oblasti.html/38">објављује нове савете</a>  за коришћење пакета OpenOffice.org</p>

<p>&nbsp;</p>

<div id="kombib_ooo3_saveti_form">Учитавање...</div>
<div id="kombib_ooo3_saveti">Учитавање...</div>

<p>
<a href="../../podrska.html">Повратак на страницу за подршку</a>.
</p>


</body>

</html>
