         // the se class encapsulates a left and right search control
      // both controls are driven by a shared search form
      function se() {
        var sFormDiv = document.getElementById("searchForm");
        var leftScDiv = document.getElementById("leftSearchControl");
        var rightScDiv = document.getElementById("rightSearchControl");

        // create a left, right search control
        // create a custom search form
        this.leftControl = new GSearchControl();
        this.rightControl = new GSearchControl();
        this.searchForm = new GSearchForm(true, sFormDiv);
        GSearch.ORDER_BY_RELEVANCE

        // bind clear and submit functions
        this.searchForm.setOnSubmitCallback(this, se.prototype.onSubmit);
        this.searchForm.setOnClearCallback(this, se.prototype.onClear);

        // set up for large result sets
        this.leftControl.setResultSetSize(GSearch.LARGE_RESULTSET);
        this.rightControl.setResultSetSize(GSearch.LARGE_RESULTSET);

        var searcher;
        var options;
        var taboptions = new GsearcherOptions();
            taboptions.setExpandMode(GSearchControl.EXPAND_MODE_OPEN);
         
        // configure left control
        // vertical layout, image and blog
        this.leftControl.addSearcher(new GimageSearch(), taboptions);

        // configure right control
        // tabbed layout image, web, news, video
        this.rightControl.addSearcher(new GwebSearch());
        this.rightControl.addSearcher(new GnewsSearch());
        this.rightControl.addSearcher(new GblogSearch());

        var drawOptions = new GdrawOptions();
        drawOptions.setDrawMode(GSearchControl.DRAW_MODE_TABBED);

        this.rightControl.setNoResultsString(GSearchControl.NO_RESULTS_DEFAULT_STRING);
        this.leftControl.setNoResultsString(GSearchControl.NO_RESULTS_DEFAULT_STRING);
        this.leftControl.draw(leftScDiv);
        this.rightControl.draw(rightScDiv, drawOptions);

        // execute a starter search
        this.searchForm.execute(topic);

      }

      // when the form fires a submit, grab its
      // value and call the left and right control
      se.prototype.onSubmit = function(form) {
        var q = form.input.value;
        if (q && q!= "") {
          this.leftControl.execute(q);
          this.rightControl.execute(q);
        }
        return false;
      }

      // when the form fires a clear, call the left and right control
      se.prototype.onClear = function(form) {
        this.leftControl.clearAllResults();
        this.rightControl.clearAllResults();
        form.input.value = "";
        return false;
      }

      function OnLoad() {
        new se();
      }
      GSearch.setOnLoadCallback(OnLoad);

    

