I'm trying to copy the Google image search from this page. Here is my code:
<script type="text/javascript">
<% if @note.text == "" %>
google.load("search", "1",{"callback":searchCallback()});
<% else %>
google.load("visualization", "1",{"callback":dummyFunction});
<% end %>
function se() {
var sFormDiv = document.getElementById("searchForm");
var leftScDiv = document.getElementById("leftSearchControl");
this.leftControl = new google.search.SearchControl();
this.searchForm = new google.search.SearchForm(true, sFormDiv);
this.searchForm.setOnSubmitCallback(this, se.prototype.onSubmit);
this.searchForm.setOnClearCallback(this, se.prototype.onClear);
this.leftControl.setResultSetSize(GSearch.LARGE_RESULTSET);
var searcher;
var options;
this.leftControl.addSearcher(new google.search.ImageSearch());
var drawOptions = new google.search.DrawOptions();
drawOptions.setDrawMode(GSearchControl.DRAW_MODE_TABBED);
this.leftControl.setNoResultsString(GSearchControl.NO_RESULTS_DEFAULT_STRING);
this.leftControl.draw(leftScDiv);
this.searchForm.execute("Ferrari");
}
// 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);
}
return false;
}
// when the form fires a clear, call the left and right control
se.prototype.onClear = function(form) {
this.leftControl.clearAllResults();
form.input.value = "";
return false;
}
function searchCallback(){
new se();
}
function dummyFunction() {
}
</script>
When I run it, I get this error:
google.search is undefined
this.leftControl = new google.search.SearchControl();
How can this be, if I'm getting to that line by way of the callback that is run when the search API is loaded? Thanks for reading.