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

  // the se class encapsulates a left and right search control
  // both controls are driven by a shared search form
  function se(keyword) {
    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 google.search.SearchControl();
    this.rightControl = new google.search.SearchControl();
    this.searchForm = new google.search.SearchForm(true, sFormDiv);

    // 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;

    // configure left control
    // vertical layout, image and blog
    ////this.leftControl.addSearcher(new google.search.ImageSearch());
    ////this.leftControl.addSearcher(new google.search.VideoSearch());

    // configure right control
    // tabbed layout image, web, news, video
    this.rightControl.addSearcher(new google.search.ImageSearch());
    this.rightControl.addSearcher(new google.search.WebSearch());
    this.rightControl.addSearcher(new google.search.NewsSearch());
    this.rightControl.addSearcher(new google.search.BlogSearch());
    this.rightControl.addSearcher(new google.search.VideoSearch());
//    this.rightControl.addSearcher(new google.search.BookSearch());

    var drawOptions = new google.search.DrawOptions();
    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(keyword);

  }

  function se2(keyword) {
    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 google.search.SearchControl();
    this.rightControl = new google.search.SearchControl();
    this.searchForm = new google.search.SearchForm(true, sFormDiv);

    // 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;

    // configure left control
    // vertical layout, image and blog
    ////this.leftControl.addSearcher(new google.search.ImageSearch());
    ////this.leftControl.addSearcher(new google.search.VideoSearch());

    // configure right control
    // tabbed layout image, web, news, video
    this.rightControl.addSearcher(new google.search.WebSearch());
    this.rightControl.addSearcher(new google.search.ImageSearch());
    this.rightControl.addSearcher(new google.search.NewsSearch());
//    this.rightControl.addSearcher(new google.search.BlogSearch());
    this.rightControl.addSearcher(new google.search.VideoSearch());
//    this.rightControl.addSearcher(new google.search.BookSearch());

    var drawOptions = new google.search.DrawOptions();
    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(keyword);

  }

  function se3(keyword) {

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

  }
  
  // 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();
  }
  google.setOnLoadCallback(OnLoad, true);

