<search function="sf">
  <name>Sourceforge.net</name>
  <description>
    Search or go to open source projects on SourceForge.net.<br/>
    <div class="helpboxDescLabels">Switches:</div>
    <table class="helpboxDescTable">
      <tr><td>/cvs</td><td> - </td><td>Browse project's CVS repository</td></tr>
      <tr><td>/svn</td><td> - </td><td>Browse project's SVN repository</td></tr>
      <tr><td>/dloads</td><td> - </td><td>Browse project's downloadable files</td></tr>
      <tr><td>/exact</td><td> - </td><td>Require all words in when searching</td></tr>
      <tr><td>/list[:admin]</td><td> - </td><td>Display list info or admin page</td></tr>
      <tr><td>/new</td><td> - </td><td>New Releases</td></tr>
      <tr><td>/project</td><td> - </td><td>Project's summary page</td></tr>
      <tr><td>/status</td><td> - </td><td>Site Status</td></tr>
    </table>
    <div class="helpboxDescLabels">Examples:</div>
    <table class="helpboxDescTable">
      <tr><td>sf itext</td></tr>
      <tr><td>sf itext java /exact</td></tr>
      <tr><td>sf /proj dqsd</td></tr>
      <tr><td>sf /cvs dqsd</td></tr>
      <tr><td>sf /svn dqsd</td></tr>
      <tr><td>sf /list dqsd-users</td></tr>
      <tr><td>sf /status</td></tr>
    </table>
  </description>
  <category>Computers<category>Programming</category></category>
  <link>http://www.sourceforge.net/</link>
  <contributor>Brent Beardsley</contributor>
  
  <form name="sfsearch"
        action="http://sourceforge.net/search/"
        method="post">
    <input type="hidden" name="words"/>
    <input type="hidden" name="type_of_search"/>
    <input type="hidden" name="exact" value="0"/>
  </form>
  
  <script><![CDATA[
    function sf(q)
    {
      if( nullArgs("sf", q) )
        return false;

      var exact = false;
      var args = parseArgs(q, "dloads, exact, new, project, cvs, svn, list, status");
      if( args.switches.length == 1 )
      {
        switch( args.switches[0].name )
        {
          case "exact":
            exact = true; break;
		  case "dloads":
		    openSearchWindow("http://prdownloads.sourceforge.net/" + args.q); return false;
          case "new":
            openSearchWindow("http://www.sourceforge.net/new/"); return false;
          case "project":
            openSearchWindow("http://sourceforge.net/projects/" + args.q); return false;
          case "cvs":
            openSearchWindow("http://" + args.q + ".cvs.sourceforge.net/" + args.q); return false;
          case "svn":
            openSearchWindow("http://" + args.q + ".svn.sourceforge.net/"); return false;
          case "list":
            var listtype = args.switch_val["list"].toLowerCase();
            openSearchWindow("https://lists.sourceforge.net/lists/" + ( listtype.length && ( listtype == "admin".substr(0, listtype.length) ) ? "admin/" : "listinfo/" ) + args.q); return false;
            break;
          case "status":
            statusUrl =	"http://sourceforge.net/docman/display_doc.php?docid=2352&group_id=1";
            if (args.q != "")
              statusUrl += "#" + args.q.toLowerCase();
            openSearchWindow(statusUrl);
            return false;
            break;
          default:
            document.sfsearch.section.value = args.switches[0].name; break;
        }
	document.sfsearch.exact.value = (exact) ? "1" : "0";
        document.sfsearch.words.value = args.q;
        submitForm(sfsearch);
      }
      else if( args.switches.length > 1 )
        nullArgs("sf","?");
      else
      {
        document.sfsearch.type_of_search.value = "soft";
	document.sfsearch.exact.value = (exact) ? "1" : "0";
        document.sfsearch.words.value = args.q;
        submitForm(sfsearch);
      }
    }
  ]]></script>

  <copyright>
	Copyright (c) 2002 David Bau
	Distributed under the terms of the
	GNU Public License, Version 2 (http://www.gnu.org/copyleft/gpl.txt)
  </copyright>
</search>


