// Copyright © 2002 by Apple Computer, Inc., All Rights Reserved.
//
// You may incorporate this Apple sample code into your own code
// without restriction. This Apple sample code has been provided "AS IS"
// and the responsibility for its operation is yours. You may redistribute
// this code, but you are not permitted to redistribute it as
// "Apple sample code" after having made changes.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Mozilla Google Search</title>
<style type="text/css">
body {
font-family:verdana, sans serif;
font-size:14px;
}
</style>
<script type="text/javascript">
function callGoogle(method,params,callback){
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
} catch (e) {
alert(e);
return false;
}
var soapCall = new SOAPCall();
soapCall.transportURI = "http://api.google.com/search/beta2";
soapCall.encode(0, method, "urn:GoogleSearch", 0, null, params.length, params);
soapCall.asyncInvoke(
function (response, soapcall, error)
{
var r = handleSOAPResponse(response,soapcall,error);
callback(r);
}
);
}
function handleSOAPResponse (response,call,error)
{
if (error != 0)
{
alert("Service failure");
return false;
} else
{
var fault = response.fault;
if (fault != null) {
var code = fault.faultCode;
var msg = fault.faultString;
alert("SOAP Fault:\n\n" +
"Code: " + code +
"\n\nMessage: " + msg
);
return false;
} else
{
return response;
}
}
}
function showResults(results)
{
if (!results)
{
return;
}
var params = results.getParameters(false,{});
var matches = params[0].element.getElementsByTagName("item");
var str = "";
for (var i=1;i<matches.length;i++)
{
var URL, title, cache;
var URLnode = matches[i].getElementsByTagName("URL").item(0).firstChild;
var titleNode = matches[i].getElementsByTagName("title").item(0).firstChild;
var cacheNode = matches[i].getElementsByTagName("cachedSize").item(0).firstChild;
URL = URLnode.nodeValue;
title = (titleNode==null)?URLnode.nodeValue:titleNode.nodeValue;
cache = (cacheNode==null)?"":cacheNode.nodeValue;
str += "<a href=\"" + URL + "\">" + title + "</a> " + cache + "<br/>";
}
document.getElementById("showLinks").innerHTML = str;
}
function doSearch()
{
var key = document.forms[0].elements["googleKey"].value;
var query = document.forms[0].elements["queryTerms"].value;
var p = new Array();
// the search query
p[0] = new SOAPParameter(key,"key");
p[1] = new SOAPParameter(query,"q");
p[2] = new SOAPParameter(0,"start");
p[3] = new SOAPParameter(10,"maxResults");
p[4] = new SOAPParameter(false,"filter");
p[5] = new SOAPParameter("","restrict");
p[6] = new SOAPParameter(false,"safeSearch");
p[7] = new SOAPParameter("","lr");
p[8] = new SOAPParameter("Latin-1","ie");
p[9] = new SOAPParameter("Latin-1","oe");
callGoogle("doGoogleSearch",p,showResults);
}
</script>
</head>
<body>
<h3>Mozilla Google Search</h3>
<form action="#" onsubmit="return false;">
<p>Enter a Google API Key (required):<br />
<input type="text" name="googleKey" value="Enter your google key here"></p>
<p>Enter your search terms:<br />
<input type="text" name="queryTerms"></p>
<p><input type="button" value="Search" onclick="doSearch();"></p>
</form>
<div id="showLinks">Search results will appear here.</div>
</body>
</html>