<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;D04CQ30_eyp7ImA9WxNWFkU.&quot;"><id>tag:blogger.com,1999:blog-29072373</id><updated>2009-10-16T02:39:22.343-07:00</updated><title type="text">Google AJAX Search API Blog</title><subtitle type="html">Your official source on the AJAX Search API.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://googleajaxsearchapi.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://googleajaxsearchapi.blogspot.com/" /><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>A Googler</name><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>92</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><link rel="self" href="http://feeds.feedburner.com/blogspot/RBev" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry gd:etag="W/&quot;CEYDRn84fip7ImA9WxNWE0o.&quot;"><id>tag:blogger.com,1999:blog-29072373.post-4414084535137901999</id><published>2009-10-12T11:23:00.000-07:00</published><updated>2009-10-12T11:29:37.136-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-12T11:29:37.136-07:00</app:edited><title>Web Search in Your Country</title><content type="html">&lt;p&gt;I am happy to announce the addition of the ability to scope your searches to a specific country in the AJAX Web Search API.  Now, if you have a lot of visitors in Madagascar, you can make sure that the search results displayed on your site are tailored to them.  All it takes is a small change to your code.&lt;/p&gt;&lt;p&gt;There are three possible ways to implement, depending on how you're using the API:&lt;/p&gt;&lt;ol&gt;&lt;li&gt; If you use the loader, you can simply load jsapi on the domain you're interested in (&lt;a href="http://code.google.com/apis/ajax/playground/#set_google_locale_using_hostname"&gt;example&lt;/a&gt;), such as:&lt;br /&gt;&lt;pre&gt;&amp;lt;script src="http://www.google.es/jsapi"&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Alternately, you can set this with the web search object's .setRestriction method (&lt;a href="http://code.google.com/apis/ajax/playground/#set_google_locale_restriction"&gt;example&lt;/a&gt;):  &lt;br /&gt;&lt;pre&gt;var ws = new google.search.WebSearch();&lt;br /&gt;ws.setRestriction(google.search.Search.RESTRICT_EXTENDED_ARGS,&lt;br /&gt;                  {'gl' : 'es'});&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Finally, if you're using the RESTful interface, all you have to do is append a "gl" URL parameter to your request:  &lt;br /&gt;&lt;pre&gt;&lt;a href="http://ajax.googleapis.com/ajax/services/search/web?v=1.0&amp;q=flowers&amp;gl=fr"&gt;http://ajax.googleapis.com/ajax/services/search/web?v=1.0&amp;amp;q=flowers&amp;amp;gl=fr&lt;/a&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Most valid &lt;a href="http://en.wikipedia.org/wiki/ISO_3166-1"&gt;country codes&lt;/a&gt; will work, as long as Google has a home page  on that country's top level domain (e.g. &lt;a href="http://www.google.es/"&gt;google.es&lt;/a&gt;).  If you use an invalid or unsupported country code, you'll get an error message letting you know.&lt;/p&gt;&lt;p&gt;We're excited to bring you this addition to the API, and look forward to seeing the innovative ways in which you use this new feature to improve your users' experience.  Please drop us a line with your thoughts (or questions) on our &lt;a href="http://groups.google.com/group/google-ajax-search-api"&gt;discussion group&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29072373-4414084535137901999?l=googleajaxsearchapi.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=Zi5FcO4xKUo:eWC5w7vuvIY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=Zi5FcO4xKUo:eWC5w7vuvIY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?i=Zi5FcO4xKUo:eWC5w7vuvIY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RBev/~4/Zi5FcO4xKUo" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/4414084535137901999?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/4414084535137901999?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RBev/~3/Zi5FcO4xKUo/web-search-in-your-country.html" title="Web Search in Your Country" /><author><name>Jeff Scudder</name><uri>http://www.blogger.com/profile/10171738514445498413</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14660138019044464658" /></author><feedburner:origLink>http://googleajaxsearchapi.blogspot.com/2009/10/web-search-in-your-country.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4MQHc5eCp7ImA9WxNXEUg.&quot;"><id>tag:blogger.com,1999:blog-29072373.post-8524049149400584</id><published>2009-09-28T09:42:00.000-07:00</published><updated>2009-09-28T10:13:01.920-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-28T10:13:01.920-07:00</app:edited><title>Google Chrome Frame Ajax Detection</title><content type="html">&lt;p&gt;In partnership with the Google Chrome Frame team, we are making available a library to allow your web application to detect the presence of &lt;a href="http://code.google.com/chrome/chromeframe/"&gt;Google Chrome Frame&lt;/a&gt;. We on the Ajax team are excited about the possibilities of this add-on improving JavaScript performance and enabling some of the new features available in HTML5. If you have a web application which makes use of these new features, you can use this library to prompt the user to install Google Chrome Frame, or recognize when a user has just installed it. The library provides granular controls so that you can create the user experience which best suits your site.&lt;/p&gt;&lt;p&gt;As a short example, I've created the following &lt;a href="http://ajax-apis.appspot.com/gcfcheck-demo"&gt;simple demo&lt;/a&gt; which just detects whether Google Chrome Frame is installed or not with an alternate message if you are in a browser for which this plugin is not available.&lt;/p&gt;&lt;script type="text/javascript" src="http://www.google.com/jsapi"&gt;&lt;/script&gt;&lt;script type="text/javascript"&gt;google.load('chrome-frame', '1');function notNeeded() {var answerDiv = document.getElementById('answer');answerDiv.innerHTML = 'Oh it looks like maybe you don\'t need Google Chrome Frame.';}; function onLoad() {var browserCheck = setTimeout("notNeeded();", 250); function missing() {var answerDiv = document.getElementById('answer'); answerDiv.innerHTML = 'Oh, sorry, it is not installed.'; if (browserCheck != null) {clearTimeout(browserCheck);};}; function found() {var answerDiv = document.getElementById('answer');answerDiv.innerHTML = 'Hooray! You have Google Chrome Frame installed.'; if (browserCheck != null) {clearTimeout(browserCheck);}};if (CFInstall.isAvailable()) {found();};CFInstall.check({'onmissing': missing,'preventPrompt': true});};google.setOnLoadCallback(onLoad);&lt;/script&gt;&lt;p&gt;&lt;div&gt;Do you have Google Chrome Frame installed?&lt;div id="answer"&gt;We're checking on that now.&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Ben Lisbakken has also added detection for Google Chrome Frame to the &lt;a href="http://code.google.com/apis/ajax/playground/"&gt;Ajax Playground&lt;/a&gt;. If you &lt;a href="http://code.google.com/p/google-ajax-examples/source/browse/trunk/interactive_samples/index.html"&gt;view source&lt;/a&gt; on the page you can see another example of a customized CFInstall.check implementation which is designed to fit the page.&lt;/p&gt;&lt;p&gt;For more details on the Google Chrome Frame Ajax API, see the &lt;a href="http://code.google.com/chrome/chromeframe/developers_guide.html#CFInstall_check_Options"&gt;documentation&lt;/a&gt; and for questions, please visit the &lt;a href="http://groups.google.com/group/google-chrome-frame"&gt;discussion group&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29072373-8524049149400584?l=googleajaxsearchapi.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=8eVfRcIbR_c:C2LCPa0szXA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=8eVfRcIbR_c:C2LCPa0szXA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?i=8eVfRcIbR_c:C2LCPa0szXA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RBev/~4/8eVfRcIbR_c" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/8524049149400584?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/8524049149400584?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RBev/~3/8eVfRcIbR_c/google-chrome-frame-ajax-detection.html" title="Google Chrome Frame Ajax Detection" /><author><name>Jeff Scudder</name><uri>http://www.blogger.com/profile/10171738514445498413</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14660138019044464658" /></author><feedburner:origLink>http://googleajaxsearchapi.blogspot.com/2009/09/google-chrome-frame-ajax-detection.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IHRXcyfyp7ImA9WxNQEE4.&quot;"><id>tag:blogger.com,1999:blog-29072373.post-9188132311247785678</id><published>2009-09-15T10:14:00.000-07:00</published><updated>2009-09-15T10:25:34.997-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-15T10:25:34.997-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="AJAX Language API" /><title>More Languages, More Keyboards</title><content type="html">&lt;p&gt;The language APIs keep right on trucking, &lt;a href="http://googleblog.blogspot.com/2009/08/google-translate-now-speaks-51.html"&gt;released recently&lt;/a&gt; are a handful of new translation languages, pairs, and keyboard layouts.&lt;/p&gt;&lt;p&gt;We've added the ability to use machine translation to or from the following languages:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Afrikaans&lt;/li&gt;&lt;li&gt;Belarusian&lt;/li&gt;&lt;li&gt;Icelandic&lt;/li&gt;&lt;li&gt;Irish&lt;/li&gt;&lt;li&gt;Macedonian&lt;/li&gt;&lt;li&gt;Malay&lt;/li&gt;&lt;li&gt;Persian&lt;/li&gt;&lt;li&gt;Swahili&lt;/li&gt;&lt;li&gt;Welsh&lt;/li&gt;&lt;li&gt;Yiddish&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;With the addition of the above the total count for language pair combination comes to a mind boggling 2550 pairs. In addition, we find the above additions exciting because, for the first time, &lt;a href="http://google-africa.blogspot.com/2009/09/google-translate-now-available-for.html"&gt;African languages&lt;/a&gt; are available through the API and we now support all &lt;a href="http://europa.eu/languages/en/home"&gt;23 Official European Union languages&lt;/a&gt;.&lt;p&gt;&lt;p&gt;A few months ago we &lt;a href="http://googleajaxsearchapi.blogspot.com/2009/06/introducing-virtual-keyboard-api.html"&gt;announce our virtual keyboard API&lt;/a&gt; and this month we've added nine new &lt;a href="http://code.google.com/apis/ajaxlanguage/documentation/#KeyboardSupportedLayout"&gt;keyboard layouts&lt;/a&gt;:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Bulgarian&lt;/li&gt;&lt;li&gt;Czech&lt;/li&gt;&lt;li&gt;Greek&lt;/li&gt;&lt;li&gt;Hebrew&lt;/li&gt;&lt;li&gt;Hungarian - 101 layout&lt;/li&gt;&lt;li&gt;Slovak&lt;/li&gt;&lt;li&gt;Slovenian&lt;/li&gt;&lt;li&gt;Turkish - Q layout&lt;/li&gt;&lt;li&gt;Ukrainian - 101 layout&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Here's a simple example of using the &lt;a href="http://savedbythegoog.appspot.com/?id=ag5zYXZlZGJ5dGhlZ29vZ3ISCxIJU2F2ZWRDb2RlGNKu1gEM"&gt;Slovak keyboard&lt;/a&gt; layout.&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WhF8No7Ryt4/Sq_MX1GQZ0I/AAAAAAAAABM/IeuS-BMn-3s/s1600-h/SlovakKeyboard.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 295px;" src="http://1.bp.blogspot.com/_WhF8No7Ryt4/Sq_MX1GQZ0I/AAAAAAAAABM/IeuS-BMn-3s/s400/SlovakKeyboard.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5381744789493409602" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29072373-9188132311247785678?l=googleajaxsearchapi.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=__bX9CBuBoM:Ai0Sxq7DfQk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=__bX9CBuBoM:Ai0Sxq7DfQk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?i=__bX9CBuBoM:Ai0Sxq7DfQk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RBev/~4/__bX9CBuBoM" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/9188132311247785678?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/9188132311247785678?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RBev/~3/__bX9CBuBoM/more-languages-more-keyboards.html" title="More Languages, More Keyboards" /><author><name>Jeff Scudder</name><uri>http://www.blogger.com/profile/10171738514445498413</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14660138019044464658" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_WhF8No7Ryt4/Sq_MX1GQZ0I/AAAAAAAAABM/IeuS-BMn-3s/s72-c/SlovakKeyboard.png" height="72" width="72" /><feedburner:origLink>http://googleajaxsearchapi.blogspot.com/2009/09/more-languages-more-keyboards.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEMCRn8zcCp7ImA9WxJaGU8.&quot;"><id>tag:blogger.com,1999:blog-29072373.post-7796710236096811046</id><published>2009-08-10T10:21:00.000-07:00</published><updated>2009-08-10T10:47:47.188-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-10T10:47:47.188-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Custom Search Engine" /><title>Custom Search with Custom Style: Peanut Butter and Jelly</title><content type="html">&lt;p&gt;Creating a custom look and feel for your website can have significant benefits in everything from improving usability to setting a professional or playful tone for your website. In many cases, letting users search the content of your site and related sites gets them the information they need faster. After all, a speedy user experience is a happy user experience. Here are some examples of how Custom Search and custom styles are as easy (and delicious) as peanut butter and jelly.&lt;/p&gt;&lt;p&gt;We start with a &lt;a href="http://www.google.com/webelements/customsearch/"&gt;Custom Search Element&lt;/a&gt;, which uses the &lt;a href="http://code.google.com/apis/ajaxsearch/documentation/customsearch/index.html"&gt;CustomSearchControl&lt;/a&gt; to add a &lt;a href="http://www.google.com/coop/cse/"&gt;Custom Search Engine&lt;/a&gt; to my web page. If you've never used a Custom Search engine before, I think you'll find a lot to love: it uses Google's search technology to include a specific group of websites for indexing, and you can &lt;a href="https://www.google.com/adsense/static/en_US/Afs.html"&gt;share in ad revenue&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;One of the many benefits of using the AJAX Search APIs to dynamically add search capabilities to your web pages is that you can also control the look and feel of the search input and results by using open web standards like cascading style sheets (CSS). When you combine this styling  with Custom Search, you can create a seamless search experience for your users.&lt;/p&gt;&lt;p&gt;You can begin by changing the search input box (dynamically added to your page by default) to use an input box that you've placed on the page wherever you like.&lt;/p&gt;&lt;pre&gt;// Set drawing options to use my text box&lt;br /&gt;// as input instead of having the library create one.&lt;br /&gt;var drawOptions = new google.search.DrawOptions();&lt;br /&gt;drawOptions.setInput(&lt;br /&gt;    document.getElementById('query_input'));&lt;br /&gt;&lt;br /&gt;// Draw the control in content div&lt;br /&gt;customSearchControl.draw(&lt;br /&gt;    'results', drawOptions);&lt;/pre&gt;&lt;p&gt;With the above changes we get a page that &lt;a href="http://ajax-apis.appspot.com/cse-less-style"&gt;looks like this&lt;/a&gt;:&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_WhF8No7Ryt4/SoBbSTlOPjI/AAAAAAAAAAc/0KGEys_H9nA/s1600-h/ajax1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 194px;" src="http://2.bp.blogspot.com/_WhF8No7Ryt4/SoBbSTlOPjI/AAAAAAAAAAc/0KGEys_H9nA/s400/ajax1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5368391125877800498" /&gt;&lt;/a&gt;&lt;p&gt;Now that we're able to use a Custom Search box (look ma, no button push required!) we can add CSS rules to change fonts, colors, and more in the search results.&lt;/p&gt;&lt;p&gt;For example, see: &lt;a href="http://ajax-apis.appspot.com/cse-style"&gt;http://ajax-apis.appspot.com/cse-style&lt;/a&gt; which has CSS rules that effect the styling of the search results and compare it to our &lt;a href="http://ajax-apis.appspot.com/cse-less-style"&gt;first step&lt;/a&gt; which uses the default styles.&lt;/p&gt;&lt;p&gt;Take a look at the CSS rules to get an idea for how this works, and how you can do custom styling to fit your own website.&lt;/p&gt;&lt;p&gt;We can change the font and add a border around each search result:&lt;/p&gt;&lt;pre&gt;#results .gsc-results {&lt;br /&gt;  /* Sets font for titles, snippets, and URLs. */&lt;br /&gt;  font-family: arial, helvetica, sans-serif;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#results .gsc-result {&lt;br /&gt;  position: relative;&lt;br /&gt;  border: 1px solid #eee;&lt;br /&gt;  border-left: 10px solid #eee;&lt;br /&gt;  padding: 8px 8px 8px 20px;&lt;br /&gt;  border-radius: 8px;&lt;br /&gt;  -webkit-border-radius: 8px;&lt;br /&gt;  -moz-border-radius: 8px;&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;We can also change the style of a single result when the user moves the mouse cursor over it:&lt;/p&gt;&lt;pre&gt;#results .gsc-result:hover {&lt;br /&gt;  border: 1px solid #888;&lt;br /&gt;  border-left: 10px solid #888;&lt;br /&gt;}&lt;/pre&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_WhF8No7Ryt4/SoBbb6aJxwI/AAAAAAAAAAk/MQVBCapHW6k/s1600-h/ajax2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 225px;" src="http://3.bp.blogspot.com/_WhF8No7Ryt4/SoBbb6aJxwI/AAAAAAAAAAk/MQVBCapHW6k/s400/ajax2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5368391290919175938" /&gt;&lt;/a&gt;&lt;p&gt;These are just a couple of examples. Since the CSS styling is handled by the browser, you can use any supported CSS rules to select portions of the search results. For more information on the result HTML structure and the CSS classes you may want to select in your own customizations, see the documentation on &lt;a href="http://code.google.com/apis/ajaxsearch/documentation/reference.html#_intro_GResultCss"&gt;styling AJAX Search results&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29072373-7796710236096811046?l=googleajaxsearchapi.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=6t73vTwB9q4:g8oVIOsAreo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=6t73vTwB9q4:g8oVIOsAreo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?i=6t73vTwB9q4:g8oVIOsAreo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RBev/~4/6t73vTwB9q4" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/7796710236096811046?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/7796710236096811046?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RBev/~3/6t73vTwB9q4/custom-search-with-custom-style-peanut.html" title="Custom Search with Custom Style: Peanut Butter and Jelly" /><author><name>Jeff Scudder</name><uri>http://www.blogger.com/profile/10171738514445498413</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14660138019044464658" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_WhF8No7Ryt4/SoBbSTlOPjI/AAAAAAAAAAc/0KGEys_H9nA/s72-c/ajax1.png" height="72" width="72" /><feedburner:origLink>http://googleajaxsearchapi.blogspot.com/2009/08/custom-search-with-custom-style-peanut.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYNSHo-fip7ImA9WxJbEU4.&quot;"><id>tag:blogger.com,1999:blog-29072373.post-1927544842322758476</id><published>2009-07-20T17:59:00.000-07:00</published><updated>2009-07-20T18:03:19.456-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-20T18:03:19.456-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="AJAX Language API" /><category scheme="http://www.blogger.com/atom/ns#" term="AJAX Search API" /><title>Behind the scenes with two AJAX API Developers</title><content type="html">We enjoy featuring real-world applications that show how versatile the AJAX APIs can be. Below we're highlighting two very different apps and the developers who built them:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;AroundMe&lt;/span&gt;&lt;br /&gt;AroundMe is an iPhone application where the AJAX APIs are central to the user experience. Specifically, the app utilizes the Local Search API to enable users to find information about their surroundings. In the videos below, Marco Pifferi (the developer behind AroundMe) gives a demo of his app, his thoughts on using the AJAX APIs, and tips for integrating them in mobile apps.&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/p/199B096EAD8832EC&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/p/199B096EAD8832EC&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Mibbit&lt;/span&gt;&lt;br /&gt;Mibbit is a web-based chat application that uses the AJAX APIs to enhance the chat experience. The language APIs help users to translate their messages into a number of different languages. Mibbit also uses the Maps API and YouTube API to display embedded maps or YouTube videos if a user includes a Maps or YouTube URL in their chat. Jimmy Moore, creator of Mibbit, walks through Mibbit in his video below.&lt;br /&gt;&lt;br /&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/nlpsQYKLLv0&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/nlpsQYKLLv0&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Do you have a great app that uses the AJAX APIs? &lt;a href="http://code.google.com/videos/submit.html"&gt;Submit a video&lt;/a&gt; about it and we may feature it on this blog.  Questions?  Stop by our &lt;a href="http://groups.google.com/group/Google-AJAX-Search-API"&gt;support forum&lt;/a&gt; or &lt;a href="http://www.mibbit.com/?server=irc.freenode.net&amp;amp;channel=%23googleajaxapis"&gt;IRC channel&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29072373-1927544842322758476?l=googleajaxsearchapi.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=M2pP2FIFGaA:Fet1444BaUs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=M2pP2FIFGaA:Fet1444BaUs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?i=M2pP2FIFGaA:Fet1444BaUs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RBev/~4/M2pP2FIFGaA" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/1927544842322758476?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/1927544842322758476?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RBev/~3/M2pP2FIFGaA/behind-scenes-with-two-ajax-api.html" title="Behind the scenes with two AJAX API Developers" /><author><name>Adam Feldman</name><uri>http://www.blogger.com/profile/15563122400987772430</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="13752713238663756264" /></author><feedburner:origLink>http://googleajaxsearchapi.blogspot.com/2009/07/behind-scenes-with-two-ajax-api.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEENRH47cCp7ImA9WxJWF00.&quot;"><id>tag:blogger.com,1999:blog-29072373.post-6051574880089844360</id><published>2009-06-22T12:07:00.000-07:00</published><updated>2009-06-22T13:31:35.008-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-22T13:31:35.008-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="AJAX Language API" /><title>Introducing the Virtual Keyboard API</title><content type="html">&lt;p&gt; It is often difficult for Internet users to input text in many non-Latin script-based languages for a variety of reasons.  The correct keyboard layout may not be installed on the computer they're using - sometimes such a layout may not be well developed or widely available.  This poses a challenging problem for web developers because there is no way they can ensure that their users have access to this very basic input technology.  Our &lt;a href="http://code.google.com/apis/ajaxlanguage/documentation/#Transliteration" id="fp3y" title="Transliteration API"&gt;Transliteration API&lt;/a&gt; can help, but requires that the user know multiple languages.&lt;br /&gt;&lt;br /&gt;Right on the heels of introducing support for &lt;a title="translating Persian (Farsi)" href="http://googleblog.blogspot.com/2009/06/google-translates-persian.html" id="rpfm"&gt;translating Persian (Farsi)&lt;/a&gt;,   we've added a new &lt;a href="http://code.google.com/apis/ajaxlanguage/documentation/#Keyboard" id="h8oa" title="Virtual Keyboard API"&gt;Virtual Keyboard API&lt;/a&gt; into the &lt;a href="http://code.google.com/apis/ajaxlanguage/" id="okla" title="Google AJAX Language API"&gt;Google AJAX Language API&lt;/a&gt; to further assist with text input.  With this, developers can help their users input text without relying on the right software being installed on the computer they happen to be using.&lt;br /&gt;&lt;br /&gt;It couldn't be easier to get this on your page.  Simply load the right package:&lt;pre class="code"&gt;google.load("elements", "1", {&lt;br /&gt; packages: "keyboard"&lt;br /&gt;});&lt;/pre&gt;&lt;br /&gt;Then create a keyboard, specifying the keyboard layout and text field to bind to:&lt;pre class="code"&gt;var kbd = new google.elements.keyboard.Keyboard(&lt;br /&gt; [google.elements.keyboard.LayoutCode.Arabic],&lt;br /&gt; ['myTextArea']);&lt;/pre&gt;&lt;br /&gt;And here's what it looks like:&lt;/p&gt;&lt;div id="mb4b" style="text-align: left;"&gt;   &lt;img src="https://docs.google.com/a/google.com/File?id=chj3qbn7_3ccmdkrkf_b" style="width: 402px; height: 182px;" /&gt; &lt;/div&gt;&lt;p&gt;This gives you the control to provide a better user experience, even for multilingual websites.  By creating multiple keyboards with different layouts, each text field can be bound to the appropriate keyboard - and the user will see only the keyboard attached to whichever text field has the focus.&lt;br /&gt;&lt;br /&gt;But don't take my word for it - check out a &lt;a href="http://code.google.com/apis/ajax/playground/#virtual_keyboard" id="pydr" title="sample"&gt;sample&lt;/a&gt; for yourself.  Notice that in addition to allowing users to click on the virtual keyboard, it also temporarily transforms the key assignments on their physical keyboard, allowing rapid typing for those users accustomed to a given layout.&lt;br /&gt;&lt;br /&gt;With this initial release, we are launching 5 language layouts.  They are: &lt;/p&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;   &lt;div&gt;     &lt;ul&gt;&lt;li&gt;         Arabic (&lt;span style="font-family:-webkit-monospace;"&gt;&lt;span style="font-size:100%;"&gt;العربية)&lt;/span&gt;&lt;/span&gt;       &lt;/li&gt;&lt;li&gt;         Hindi (&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:100%;"&gt;हिन्दी)&lt;/span&gt;&lt;/span&gt;       &lt;/li&gt;&lt;li&gt;         Polish (&lt;span style="font-family:-webkit-monospace;"&gt;&lt;span style="font-size:100%;"&gt;Polski)&lt;/span&gt;&lt;/span&gt;       &lt;/li&gt;&lt;li&gt;         Russian (&lt;span style="font-family:-webkit-monospace;"&gt;&lt;span style="font-size:100%;"&gt;Русский)&lt;/span&gt;&lt;/span&gt;       &lt;/li&gt;&lt;li&gt;         Thai (&lt;span style="font-family:-webkit-monospace;"&gt;&lt;span style="font-size:100%;"&gt;ไทย)&lt;/span&gt;&lt;/span&gt;       &lt;/li&gt;&lt;/ul&gt;   &lt;/div&gt; &lt;/div&gt; &lt;p&gt;&lt;br /&gt;We plan to roll out support for more keyboard layouts in the future.  But in the meantime, read through the &lt;a href="http://code.google.com/apis/ajaxlanguage/documentation/referenceKeyboard.html" id="j4cg" title="class reference"&gt;class reference&lt;/a&gt; and see the rest of the &lt;a href="http://code.google.com/apis/ajax/playground/#virtual_keyboard" id="gj1i" title="Code Playground samples"&gt;Code Playground samples&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;After you've had time to experiment, let us know what you think and which other layouts you'd like to see.  Feedback is always welcome in our &lt;a href="http://groups.google.com/group/Google-AJAX-Search-API" id="d8z9" title="support forum"&gt;support forum&lt;/a&gt; and &lt;a href="http://www.mibbit.com/?server=irc.freenode.net&amp;amp;channel=%23googleajaxapis" id="m0_:" title="IRC channel"&gt;IRC channel&lt;/a&gt;. &lt;/p&gt;    &lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29072373-6051574880089844360?l=googleajaxsearchapi.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=bpZvMQqX91E:9NTtooeISf4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=bpZvMQqX91E:9NTtooeISf4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?i=bpZvMQqX91E:9NTtooeISf4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RBev/~4/bpZvMQqX91E" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/6051574880089844360?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/6051574880089844360?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RBev/~3/bpZvMQqX91E/introducing-virtual-keyboard-api.html" title="Introducing the Virtual Keyboard API" /><author><name>Adam Feldman</name><uri>http://www.blogger.com/profile/15563122400987772430</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="13752713238663756264" /></author><feedburner:origLink>http://googleajaxsearchapi.blogspot.com/2009/06/introducing-virtual-keyboard-api.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUACRH8ycSp7ImA9WxJWEEU.&quot;"><id>tag:blogger.com,1999:blog-29072373.post-5044731694533724177</id><published>2009-06-11T09:35:00.000-07:00</published><updated>2009-06-15T10:42:45.199-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-15T10:42:45.199-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ext-core" /><category scheme="http://www.blogger.com/atom/ns#" term="AJAX Libraries API" /><title>Ext-core ready to go</title><content type="html">Recently, the guys over at Ext JS released ext-core under an MIT license, which was a big win for open source!  Today, they released a stable (non-beta) version of this library and we are proud to be part of that announcement by hosting the new version.  You can now pull ext-core from Google servers:&lt;pre class="code"&gt;// directly access it&lt;br /&gt;http://ajax.googleapis.com/ajax/libs/ext-core/3.0.0/ext-core.js&lt;br /&gt;// alias the newest 3.0.x version&lt;br /&gt;http://ajax.googleapis.com/ajax/libs/ext-core/3.0/ext-core.js&lt;br /&gt;// alias the newest 3.x.x version&lt;br /&gt;http://ajax.googleapis.com/ajax/libs/ext-core/3/ext-core.js&lt;br /&gt;// directly access the uncompressed code&lt;br /&gt;http://ajax.googleapis.com/ajax/libs/ext-core/3.0.0/ext-core-debug.js&lt;br /&gt;&lt;/pre&gt;You can also use it from the loader:&lt;pre class="code"&gt;google.load('ext-core', '3.0');&lt;br /&gt;google.load('ext-core', '3', {uncompressed : true});&lt;br /&gt;&lt;/pre&gt;Thanks to all for the requests to add ext-core to our Libraries API, and big thanks to Ext JS for providing their library so openly!  For more information, head over to their &lt;a href="http://extjs.com/blog/2009/06/10/building-a-rating-widget-with-ext-core-30-final-and-google-cdn/"&gt;blog post&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29072373-5044731694533724177?l=googleajaxsearchapi.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=REcNAghn_6o:4jlI_bDhblc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=REcNAghn_6o:4jlI_bDhblc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?i=REcNAghn_6o:4jlI_bDhblc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RBev/~4/REcNAghn_6o" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/5044731694533724177?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/5044731694533724177?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RBev/~3/REcNAghn_6o/ext-core-ready-to-go.html" title="Ext-core ready to go" /><author><name>Ben Lisbakken</name><uri>http://www.blogger.com/profile/07154034155008127880</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11191818286118328776" /></author><feedburner:origLink>http://googleajaxsearchapi.blogspot.com/2009/06/ext-core-ready-to-go.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcDQ3w6fyp7ImA9WxJXFEs.&quot;"><id>tag:blogger.com,1999:blog-29072373.post-474641750922618239</id><published>2009-06-08T00:23:00.000-07:00</published><updated>2009-06-08T04:21:12.217-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-08T04:21:12.217-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="AJAX Language API" /><title>Arabic Transliteration added to the AJAX Language API</title><content type="html">Last year we launched the Transliteration API as an addition to the AJAX Language API.  This gave users the ability to transliterate (the process of phonetically converting words from one script into another) text into several Indic languages using a normal English keyboard.&lt;br /&gt;&lt;br /&gt;We're happy to announce that we've now added Arabic to the list of supported languages.  Now, you can allow your users to easily input Arabic-language text into any text field or text area on your web page without switching to a non-Latin alphabet keyboard - just like on the &lt;a href="http://www.google.com/ta3reeb/" id="xfpj" title="our Labs page"&gt;Labs page&lt;/a&gt;.  For example, if the user types '&lt;i&gt;mar7aban bekom'&lt;/i&gt;, the API will transliterate each word, with the result '&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Tahoma;"&gt;مرحبا بكم&lt;/span&gt;&lt;/span&gt;' (Arabic for &lt;i&gt;welcome&lt;/i&gt;). The API will even automatically adjust the direction of the text area to support this right-to-left language.&lt;br /&gt;&lt;br /&gt;Take a look at the &lt;a title="documentation" href="http://code.google.com/apis/ajaxlanguage/documentation/#Transliteration" id="lua-"&gt;documentation&lt;/a&gt; and then head over to the &lt;a title="Code Playground" href="http://code.google.com/apis/ajax/playground/#transliterate_arabic" id="h0gs"&gt;Code Playground&lt;/a&gt; to give it a try for yourself.  If you have any questions, stop by the &lt;a title="Google AJAX API developer forum" href="http://groups.google.com/group/Google-AJAX-Search-API" id="a-.w"&gt;Google AJAX API developer forum&lt;/a&gt; or &lt;a title="IRC channel" href="http://www.mibbit.com/?server=irc.freenode.net&amp;amp;channel=%23googleajaxapis" id="npsz"&gt;IRC channel&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29072373-474641750922618239?l=googleajaxsearchapi.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=ekYJ73TyAlE:gHIRgqK8RPc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=ekYJ73TyAlE:gHIRgqK8RPc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?i=ekYJ73TyAlE:gHIRgqK8RPc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RBev/~4/ekYJ73TyAlE" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/474641750922618239?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/474641750922618239?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RBev/~3/ekYJ73TyAlE/arabic-transliteration-added-to-ajax.html" title="Arabic Transliteration added to the AJAX Language API" /><author><name>Adam Feldman</name><uri>http://www.blogger.com/profile/15563122400987772430</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="13752713238663756264" /></author><feedburner:origLink>http://googleajaxsearchapi.blogspot.com/2009/06/arabic-transliteration-added-to-ajax.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YHR3g9cCp7ImA9WxJQGEo.&quot;"><id>tag:blogger.com,1999:blog-29072373.post-3082419461139249241</id><published>2009-06-01T10:06:00.000-07:00</published><updated>2009-06-01T10:58:56.668-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-01T10:58:56.668-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Custom Search Engine" /><category scheme="http://www.blogger.com/atom/ns#" term="Blog Search" /><category scheme="http://www.blogger.com/atom/ns#" term="AJAX Search API" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Web Elements" /><title>AJAX Custom Search Gadget on Blogger</title><content type="html">The AJAX Search gadget for Blogger is now available to all users on Blogger.com. This gadget accesses a &lt;a href="http://www.google.com/cse"&gt;Custom Search Engine&lt;/a&gt; (CSE) that is created automatically for your blog and provides search results inline, with the look and feel of your blog. You can get all this with just a few clicks from the Blogger control panel.&lt;br /&gt;&lt;br /&gt;One cool feature of the gadget is the 'Linked From Here' feature that searches the pages you've linked to from your blog posts. As you create new posts, we automatically update your search engine to include all the linked pages, as well as all the pages linked from your link lists and blog lists.  Check out the &lt;a href="http://buzz.blogger.com/2009/06/search-box-gadget-available-to-all.html"&gt;gadget&lt;/a&gt; — the search results match the look and feel of your blog and show up inline, as shown in the screenshot below. You can click a button to dismiss the results when you are done, and go back to reading the current post.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qU0w4wiK3GA/ShWMhtBLTxI/AAAAAAAAABc/kX6vTXaXyHo/s1600-h/blogger.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 298px;" src="http://1.bp.blogspot.com/_qU0w4wiK3GA/ShWMhtBLTxI/AAAAAAAAABc/kX6vTXaXyHo/s400/blogger.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5338327443965693714" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you are not using Blogger, you can still create something similar for your website using the &lt;a href="http://www.google.com/webelements/customsearch/"&gt;Custom Search element&lt;/a&gt; (read more about this new element at the &lt;a href="http://googlecustomsearch.blogspot.com/2009/05/introducing-custom-search-web-element.html"&gt;Custom Search blog&lt;/a&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29072373-3082419461139249241?l=googleajaxsearchapi.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=qXM-d9M7UyM:qsPLoaBdLw8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=qXM-d9M7UyM:qsPLoaBdLw8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?i=qXM-d9M7UyM:qsPLoaBdLw8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RBev/~4/qXM-d9M7UyM" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/3082419461139249241?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/3082419461139249241?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RBev/~3/qXM-d9M7UyM/ajax-custom-search-gadget-on-blogger.html" title="AJAX Custom Search Gadget on Blogger" /><author><name>Adam Feldman</name><uri>http://www.blogger.com/profile/15563122400987772430</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="13752713238663756264" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_qU0w4wiK3GA/ShWMhtBLTxI/AAAAAAAAABc/kX6vTXaXyHo/s72-c/blogger.gif" height="72" width="72" /><feedburner:origLink>http://googleajaxsearchapi.blogspot.com/2009/06/ajax-custom-search-gadget-on-blogger.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04ASXw_cSp7ImA9WxJQFEg.&quot;"><id>tag:blogger.com,1999:blog-29072373.post-2472555723556331421</id><published>2009-05-27T11:54:00.001-07:00</published><updated>2009-05-27T14:32:28.249-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-27T14:32:28.249-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Custom Search Engine" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Web Elements" /><title>Easy as 1-2-3 - introducing Google Web Elements</title><content type="html">&lt;span class="Apple-style-span" style="font-family: Verdana; font-size: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-top: 0px;"&gt;Today at Google I/O, we launched &lt;a href="http://www.google.com/webelements/" id="u7wm" style="color: #551a8b;" title="Google Web Elements"&gt;Google Web Elements&lt;/a&gt; with one goal in mind - making life easier for developers. Google Web Elements make it incredibly simple to add Google products to your site, app or blog. It's so easy, you'll feel like you're cheating.  Inspired by the convenience of embeddable YouTube videos, Google Web Elements allow you to add products like Google Custom Search, Google Docs, and Google Maps to your website with the simplicity of copy and paste.  For instance, here's the new Google News element:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;iframe allowtransparency="true" border="0" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://www.google.com/uds/modules/elements/newsshow/iframe.html?rsz=large&amp;amp;format=300x250&amp;amp;element=true" style="border: 0pt none; height: 250px; margin: 0pt; width: 300px;"&gt;&lt;/iframe&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Each element is designed to help you get started quickly without spending time on the deep technical details.  Yet behind it all, Google Web Elements are powered by Google's scalable and flexible &lt;a href="http://code.google.com/" id="cph1" style="color: #551a8b;" title="developer APIs"&gt;developer APIs&lt;/a&gt;, offering a world of customization just beneath the surface, keeping up with your site as it grows.&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-top: 0px;"&gt;For more details, check out the &lt;a href="http://google-code-updates.blogspot.com/2009/05/introduce-google-web-elements.html"&gt;Google Code&lt;/a&gt; and &lt;a href="http://googlecustomsearch.blogspot.com/2009/05/introducing-custom-search-web-element.html"&gt;Custom Search&lt;/a&gt; blogs.  Google Web Elements are already available for eight of our most popular products, with more soon to follow.  To get started, visit the &lt;a href="http://www.google.com/webelements/" id="tvpk" style="color: #551a8b;" title="Google Web Elements"&gt;Google Web Elements&lt;/a&gt; homepage and please be sure to &lt;a href="http://www.google.com/support/forum/p/webelements" id="x6_3" title="let us know"&gt;let us know&lt;/a&gt; what you'd like to see us work on next.&lt;/insert&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-top: 0px;"&gt;Want to know what else is going on at Google I/O?  Follow us on twitter &lt;a href="http://twitter.com/googleio" id="jv3j" title="@googleio"&gt;@googleio&lt;/a&gt; and &lt;a href="http://googleio.twazzup.com/" title="twazzup"&gt;twazzup&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29072373-2472555723556331421?l=googleajaxsearchapi.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=PH2jwu-CzSQ:Z1920fmq0Gc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=PH2jwu-CzSQ:Z1920fmq0Gc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?i=PH2jwu-CzSQ:Z1920fmq0Gc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RBev/~4/PH2jwu-CzSQ" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/2472555723556331421?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/2472555723556331421?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RBev/~3/PH2jwu-CzSQ/easy-as-1-2-3-introducing-google-web.html" title="Easy as 1-2-3 - introducing Google Web Elements" /><author><name>Adam Feldman</name><uri>http://www.blogger.com/profile/15563122400987772430</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="13752713238663756264" /></author><feedburner:origLink>http://googleajaxsearchapi.blogspot.com/2009/05/easy-as-1-2-3-introducing-google-web.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQERX8yfSp7ImA9WxVaEEk.&quot;"><id>tag:blogger.com,1999:blog-29072373.post-8507762335528866410</id><published>2009-04-06T10:39:00.000-07:00</published><updated>2009-04-06T10:51:44.195-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-06T10:51:44.195-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="playground" /><title>AJAX APIs Playground Ver. 2</title><content type="html">I am very pleased to announce version 2 of the &lt;a href="http://code.google.com/apis/ajax/playground/"&gt;AJAX APIs Playground&lt;/a&gt;. For those of you not familiar with it, the Playground is an educational application designed to show interactive code samples for some of Google's coolest Javascript APIs. Of the new changes, the most obvious is the sweet new UI, thanks to help from Roman Nurik of the Google Earth team.&lt;br /&gt;&lt;br /&gt;The new features are:&lt;br /&gt;* Break points (simulated in Javascript)&lt;br /&gt;* Firebug Lite in output for debugging&lt;br /&gt;* Line numbers in code editor&lt;br /&gt;* Ability to edit HTML of samples&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_DxbDaPwqVhM/SdpAN9uhK0I/AAAAAAAAACM/Mz0ujgeCCqQ/s1600-h/ss.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 213px;" src="http://1.bp.blogspot.com/_DxbDaPwqVhM/SdpAN9uhK0I/AAAAAAAAACM/Mz0ujgeCCqQ/s400/ss.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5321636518343813954" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The breakpoints and Firebug Lite additions are my favorite new features. But why did I include Firebug Lite when all web developers (should!) have Firebug installed? Because when code runs on the Playground, it runs in an iFrame. That iFrame does not have the Firebug object initialized in it. Since it is a cross-domain iFrame, there's no simple way to add Firebug to the iFrame's window object, so adding Firebug Lite was the best approach. This makes it so you can now use all of your favorite &lt;a href="http://getfirebug.com/console.html"&gt;Firebug debugging convenience functions&lt;/a&gt; in the Playground!&lt;br /&gt;&lt;br /&gt;To use Firebug Lite and breakpoints, simply click on the line number you want to add a breakpoint to and hit "Debug Code". This will insert Firebug Lite into the output and pause the execution on the breakpoint line number until you to click the play button to continue. Try adding a breakpoint to a line, clicking "Debug Code", then opening Firebug Lite and typing in a variable name to inspect the contents/value of the variable at that point in the code.&lt;br /&gt;&lt;br /&gt;Adding breakpoints and forcing Firebug into a local function context were really fun engineering problems, so if you want to check them out (or &lt;a href="http://code.google.com/p/google-ajax-examples/w/list"&gt;contribute code to the Playground&lt;/a&gt;) go to the &lt;a href="http://code.google.com/p/google-ajax-examples/source/browse/#svn/trunk/interactive_samples"&gt;open source repository for it&lt;/a&gt;, come &lt;a href="http://www.mibbit.com/?server=irc.freenode.net&amp;channel=%23googleajaxapis"&gt;chat it up on IRC&lt;/a&gt;, or talk with me in person at the quickly approaching &lt;a href="http://code.google.com/io/"&gt;Google I/O conference&lt;/a&gt; (early bird &lt;a href="https://io2009.event-projects.com/"&gt;registration&lt;/a&gt; runs until May 1).&lt;br /&gt;&lt;br /&gt;Also, it's really important that you &lt;a href="http://spreadsheets.google.com/viewform?hl=en&amp;formkey=cFM5OU5yN3BrRzhOOEhFc2VBMmlQU2c6MA"&gt;share your feedback&lt;/a&gt; so that I know what you'd like to see in the next version of the Playground! Thanks, and enjoy the Playground!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29072373-8507762335528866410?l=googleajaxsearchapi.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=XFbhgvv5AdU:XNRGPfls4sI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=XFbhgvv5AdU:XNRGPfls4sI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?i=XFbhgvv5AdU:XNRGPfls4sI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RBev/~4/XFbhgvv5AdU" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/8507762335528866410?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/8507762335528866410?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RBev/~3/XFbhgvv5AdU/ajax-apis-playground-ver-2.html" title="AJAX APIs Playground Ver. 2" /><author><name>Ben Lisbakken</name><uri>http://www.blogger.com/profile/07154034155008127880</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11191818286118328776" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_DxbDaPwqVhM/SdpAN9uhK0I/AAAAAAAAACM/Mz0ujgeCCqQ/s72-c/ss.png" height="72" width="72" /><feedburner:origLink>http://googleajaxsearchapi.blogspot.com/2009/04/ajax-apis-playground-ver-2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08ERXkzeip7ImA9WxVbF0o.&quot;"><id>tag:blogger.com,1999:blog-29072373.post-970043522600103385</id><published>2009-04-03T09:06:00.000-07:00</published><updated>2009-04-03T09:23:24.782-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-03T09:23:24.782-07:00</app:edited><title>Making content creation easy with the Google AJAX APIs - Guest post</title><content type="html">We started &lt;a href="http://www.nextstop.com/"&gt;nextstop.com&lt;/a&gt; with the idea that we could make it significantly easier and more fun to discover new and interesting things to do anywhere in the world, based on recommendations from people who know a place well.  Whether it was a neat museum, a hidden local restaurant, or a great place to go shopping we wanted to make it super easy and fun for people to share recommendations for their favorite places, wherever they might live.&lt;br /&gt;&lt;br /&gt;The trick of course was in how to do this.  It was important for us to combine ease of making a recommendation -- our goal was that it should be as simple as entering the name of a place, and a few sentences about why you liked it -- with rich information about a place so it was really useful to others -- photos, contact information, maps, etc.  The solution, not surprisingly since I'm writing here, was to use a number of Google's APIs to gather related information about the recommendation and make it easy for our members to include it in their recommendation.&lt;br /&gt;&lt;br /&gt;You can best see how this works by going through our &lt;a href="http://www.nextstop.com/card/new/"&gt;recommendation flow&lt;/a&gt;, or watching the video below.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/7kGRUIh8Ek8&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/7kGRUIh8Ek8&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Let me walk you through how this is working under the hood:  &lt;br /&gt;&lt;br /&gt;1) When the page loads, the first thing we do is use the &lt;a href="http://code.google.com/apis/ajax/documentation/#GoogleLoad"&gt;Google loader&lt;/a&gt; to load the JQuery and JQuery UI libraries, as well as Google Maps.  As part of this, we also grab the user's current location using google.loader.ClientLocation and store the lat/lng if available to use later.&lt;br /&gt;&lt;br /&gt;2) In step 1, we ask the user for what's being recommended.  We use this string to do a Google local search for business listings and KML results that match, using the user's current location to bound the local search by setting the sll and sspn parameters.  Between local business listings and KML results, we can offer incredible global coverage of everything from restaurants to tourist attractions to hole-in-the-wall bars and clubs.  We're using the JSON version of the local search API, which we call from our servers using Python's urlopen() so that we can supplement the results with our own database of results.&lt;br /&gt;&lt;br /&gt;3) In step 2 we do an image search for related images using Google's image search API.  While we let users change the search terms to find just the right picture, often our default image search (which combines the name of the place and a city name) returns great results.  There are photos of almost everything, so you can even recommend a particular dish at a &lt;a href="http://www.nextstop.com/guide/Ka2iYVinO4w/noodles-in-taipei/"&gt;restaurant in Taipei&lt;/a&gt; and have the photos to go along with it.&lt;br /&gt;&lt;br /&gt;4) In step 3, we ask for a few sentences about why that place or activity really stands out to them.  After the recommendation has been submitted, we use the &lt;a href="http://code.google.com/apis/ajaxlanguage/"&gt;Google Language APIs&lt;/a&gt; to detect the language of the recommendation, which we can later use to filter content by your language, and we hope to someday integrate the ability to translate recommendations into your language of choice.&lt;br /&gt;&lt;br /&gt;Its a very simple and fast process for the user making the recommendation, but the result is a recommendation with address, phone number, map, and photo that is really useful to another user looking to discover something new.&lt;br /&gt;&lt;br /&gt;We've built our whole product around the Google APIs, and feel like we're just scratching the surface of what's possible.  We're planning to let users add other information (like related websites, searches, news, etc.) using Google's APIs as well.&lt;br /&gt;&lt;br /&gt;We'll be at &lt;a href="http://code.google.com/io"&gt;Google I/O&lt;/a&gt; on May 27-28 talking about what we've done so far, and will hopefully have a few new uses of the Google APIs to show off at that time.  Please come say hello -- we'd love to hear your feedback on &lt;a href="http://www.nextstop.com/"&gt;nextstop&lt;/a&gt;, or share tips on using the Google APIs.  You can also check out some of the places recommended near the &lt;a href="http://www.nextstop.com/location/map/1EpIxzRL9Ck/san-francisco/?q=&amp;tag=&amp;lat=37.78436757145777&amp;lng=-122.4026083946228&amp;z=16"&gt;Moscone center&lt;/a&gt;, or add a few of your own!&lt;br /&gt;&lt;br /&gt;Carl Sjogreen (co-founder, nextstop.com)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29072373-970043522600103385?l=googleajaxsearchapi.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=vvtqXYapnEs:jvFmFlHTh1k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=vvtqXYapnEs:jvFmFlHTh1k:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?i=vvtqXYapnEs:jvFmFlHTh1k:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RBev/~4/vvtqXYapnEs" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/970043522600103385?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/970043522600103385?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RBev/~3/vvtqXYapnEs/making-content-creation-easy-with.html" title="Making content creation easy with the Google AJAX APIs - Guest post" /><author><name>Ben Lisbakken</name><uri>http://www.blogger.com/profile/07154034155008127880</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11191818286118328776" /></author><feedburner:origLink>http://googleajaxsearchapi.blogspot.com/2009/04/making-content-creation-easy-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8CQXo8fSp7ImA9WxVUE04.&quot;"><id>tag:blogger.com,1999:blog-29072373.post-6968261194225642610</id><published>2009-03-17T17:50:00.000-07:00</published><updated>2009-03-17T17:57:40.475-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-17T17:57:40.475-07:00</app:edited><title>Updated Local Search Control used in brand new GoogleBar</title><content type="html">A much requested feature, the Local Search Control now includes ads when a search is performed.  Users will benefit from seeing targeted and relevant sponsored results, and you can benefit by sharing in the revenue of including these results on your site.  Ads aren't the only thing that's new - there's also a new (and, we hope you agree, better) UI:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qU0w4wiK3GA/ScAxWrXbwoI/AAAAAAAAABU/HMKZ-0DBahU/s1600-h/LSC-example.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 203px;" src="http://4.bp.blogspot.com/_qU0w4wiK3GA/ScAxWrXbwoI/AAAAAAAAABU/HMKZ-0DBahU/s400/LSC-example.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5314301825965081218" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This new Local Search Control has been used in a brand new version of the &lt;a href="http://code.google.com/apis/maps/documentation/services.html#UsingGoogleBar"&gt;GoogleBar&lt;/a&gt; (part of the Maps API).  In almost all cases, the GoogleBar provides the ideal way to add searches to Google Maps.  The GoogleBar, too, includes advertisements with the results.  In order to share in the revenue, you need to supply your AdSense publisher ID.  You can use your existing ID or &lt;a href="https://www.google.com/adsense/support/bin/answer.py?answer=9880"&gt;sign up for a new AdSense account&lt;/a&gt;.  Once you have an account, &lt;a href="https://www.google.com/adsense/support/bin/answer.py?answer=45465"&gt;get your AdSense publisher ID&lt;/a&gt; and include it as an option when you set up the GoogleBar:&lt;br /&gt;&lt;br /&gt;&lt;pre class="code" style="overflow:scroll;"&gt;&lt;br /&gt;&amp;lt;script src=&amp;quot;/jsapi?key=YOUR_KEY_HERE&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt; google.load(&amp;quot;maps&amp;quot;, &amp;quot;2&amp;quot;);&lt;br /&gt; var opts = {&lt;br /&gt;&lt;br /&gt;    googleBarOptions : {&lt;br /&gt;      style : 'new',   // This tag is necessary for the first few weeks until the new UI becomes default&lt;br /&gt;      adsOptions : {&lt;br /&gt;        client : ####  // Your Google AdSense publisher ID&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  map = new GMap2(document.getElementById(&amp;quot;map&amp;quot;), opts);&lt;br /&gt;  map.setCenter(new GLatLng(33.956461,-118.396225), 13);&lt;br /&gt;  map.enableGoogleBar();&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Optionally, you may also specify an AdSense for Search channel (&lt;a href="https://www.google.com/adsense/support/bin/answer.py?hl=en&amp;answer=32614"&gt;more info on channels&lt;/a&gt;), the Ad Safety Level to associate with your advertising, and the language in which to display results. For a full list of options and details on including them, see the &lt;a href="http://code.google.com/apis/maps/documentation/services.html#UsingGoogleBar"&gt;GoogleBar documentation&lt;/a&gt;. Note: currently ads only appear for results that are inline - this limitation should be removed within a few weeks.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you'd like to learn more about the new underlying, low-level Local Search Control, the &lt;a href="http://code.google.com/apis/ajaxsearch/documentation/localsearch/index.html"&gt;reference documentation&lt;/a&gt; and &lt;a href="http://code.google.com/apis/ajax/playground/#local_search_control"&gt;Code Playground examples &lt;/a&gt;contain everything you need to know.&lt;br /&gt;&lt;br /&gt;For more information, see this recent post on the &lt;a href="http://googlegeodevelopers.blogspot.com/2009/03/changes-to-googlebar.html"&gt;Maps API blog&lt;/a&gt;.  Questions or comments?  Please visit the &lt;a href="http://groups.google.com/group/Google-AJAX-Search-API"&gt;AJAX API&lt;/a&gt; and &lt;a href="http://groups.google.com/group/Google-Maps-API"&gt;Maps API&lt;/a&gt; discussion groups.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29072373-6968261194225642610?l=googleajaxsearchapi.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=tpRJANKpwTc:__chjfCxvoE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=tpRJANKpwTc:__chjfCxvoE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?i=tpRJANKpwTc:__chjfCxvoE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RBev/~4/tpRJANKpwTc" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/6968261194225642610?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/6968261194225642610?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RBev/~3/tpRJANKpwTc/updated-local-search-control-used-in.html" title="Updated Local Search Control used in brand new GoogleBar" /><author><name>Adam Feldman</name><uri>http://www.blogger.com/profile/15563122400987772430</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="13752713238663756264" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_qU0w4wiK3GA/ScAxWrXbwoI/AAAAAAAAABU/HMKZ-0DBahU/s72-c/LSC-example.gif" height="72" width="72" /><feedburner:origLink>http://googleajaxsearchapi.blogspot.com/2009/03/updated-local-search-control-used-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUDR3cyeyp7ImA9WxVVE00.&quot;"><id>tag:blogger.com,1999:blog-29072373.post-1874035892041830596</id><published>2009-03-05T17:20:00.000-08:00</published><updated>2009-03-05T17:34:36.993-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-05T17:34:36.993-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="AJAX Search API" /><title>Experimental Features</title><content type="html">As part of Tuesday's &lt;a href="http://google-code-updates.blogspot.com/2009/03/introducing-labs-for-google-code.html"&gt;Google Code Labs announcement&lt;/a&gt;, the AJAX Search API became part of the graduating class.  We're still working with our lawyerly team members to update our Terms of Use to include a 3-year deprecation policy.  If you're curious what that policy will look like, take a look at Section 4.5 of the &lt;a href="http://code.google.com/apis/visualization/terms.html"&gt;Visualization API terms&lt;/a&gt; -- it will be similar to that.&lt;br /&gt;&lt;br /&gt;You'll see that an exception to the deprecation policy will be features marked "&lt;a href="http://code.google.com/labs/faq.html#experimental"&gt;experimental&lt;/a&gt;."  This label is for experimental features that the deprecation policy does not apply to and therefore they can be changed or removed in the future, even if the deprecation policy applies to the rest of the API.  You may have seen in the &lt;a href="http://code.google.com/apis/ajaxsearch/documentation/reference.html"&gt;AJAX Search API reference&lt;/a&gt; that we have a few such features already, so we wanted to make sure you knew which ones those were.&lt;br /&gt;&lt;br /&gt;The current experimental features include all of Book Search and the "image type" restriction of Image Search.  We've done our best to clearly mark all of these as experimental in the &lt;a href="http://code.google.com/apis/ajaxsearch/documentation/reference.html"&gt;docs&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;As always, please let us know if you have any questions or comments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29072373-1874035892041830596?l=googleajaxsearchapi.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=jG_LHuD_XuI:V5SmW4t-iwY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=jG_LHuD_XuI:V5SmW4t-iwY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?i=jG_LHuD_XuI:V5SmW4t-iwY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RBev/~4/jG_LHuD_XuI" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/1874035892041830596?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/1874035892041830596?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RBev/~3/jG_LHuD_XuI/experimental-features.html" title="Experimental Features" /><author><name>Adam Feldman</name><uri>http://www.blogger.com/profile/15563122400987772430</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="13752713238663756264" /></author><feedburner:origLink>http://googleajaxsearchapi.blogspot.com/2009/03/experimental-features.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4FRno9eip7ImA9WxVVEU0.&quot;"><id>tag:blogger.com,1999:blog-29072373.post-3851641607209509762</id><published>2009-03-03T10:59:00.000-08:00</published><updated>2009-03-03T11:01:57.462-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-03T11:01:57.462-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SOAP Search API" /><category scheme="http://www.blogger.com/atom/ns#" term="AJAX Search API" /><title>Google Code Labs and the SOAP Search API</title><content type="html">As &lt;a href="http://google-code-updates.blogspot.com/2009/03/introducing-labs-for-google-code.html"&gt;recently announced&lt;/a&gt;, a new program was introduced today for &lt;a href="http://code.google.com/labs/"&gt;Google Code Labs&lt;/a&gt;.  We're proud that the AJAX Search API has already graduated from Labs, which demonstrates our long-term commitment to it.&lt;br /&gt;&lt;br /&gt;Also part of that announcement was that the SOAP Search API will be retired on August 31st, 2009.  It was deprecated in 2006, when we stopped accepting new developers for the API.  Since then, it's been steadily declining in usage and we believe the majority of use cases are sufficiently handled by the more comprehensive AJAX Search API.&lt;br /&gt;&lt;br /&gt;In many ways, this AJAX API is a superset of the SOAP API, providing access to local, news, image, and video search results, among others, in addition to web search.  Therefore, we encourage SOAP developers to explore our &lt;a href="http://code.google.com/apis/ajaxsearch/documentation/"&gt;documentation&lt;/a&gt; and consider migrating their applications.  &lt;br /&gt;&lt;br /&gt;Please keep in mind that the AJAX APIs exist for the benefit of end-users; several of their features and usage guidelines are designed with them in mind.  For instance, each search performed with the API must be the direct result of a user action.  Automated searching is strictly prohibited, as is permanently storing any search results.  Please refer to the &lt;a href="http://code.google.com/apis/ajaxsearch/terms.html"&gt;Terms of Use&lt;/a&gt; for more detail.&lt;br /&gt;&lt;br /&gt;And for developers new to the AJAX Search API, don't forget to check out our &lt;a href="http://groups.google.com/group/Google-AJAX-Search-API"&gt;discussion group&lt;/a&gt;, a good resource if you have questions or need more help.  Welcome aboard!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29072373-3851641607209509762?l=googleajaxsearchapi.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=eHIKbHhL4xk:YazxmW2nqSQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/RBev?a=eHIKbHhL4xk:YazxmW2nqSQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/RBev?i=eHIKbHhL4xk:YazxmW2nqSQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RBev/~4/eHIKbHhL4xk" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/3851641607209509762?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/3851641607209509762?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RBev/~3/eHIKbHhL4xk/google-code-labs-and-soap-search-api.html" title="Google Code Labs and the SOAP Search API" /><author><name>Adam Feldman</name><uri>http://www.blogger.com/profile/15563122400987772430</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="13752713238663756264" /></author><feedburner:origLink>http://googleajaxsearchapi.blogspot.com/2009/03/google-code-labs-and-soap-search-api.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEGRX09cCp7ImA9WxVWFEw.&quot;"><id>tag:blogger.com,1999:blog-29072373.post-5533132372290011666</id><published>2009-02-20T11:14:00.000-08:00</published><updated>2009-02-23T10:43:44.368-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-23T10:43:44.368-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="AJAX Libraries API" /><title>jQuery, YUI updates</title><content type="html">We have updated versions of jQuery and YUI on our CDN.  jQuery is now at version 1.3.2 which will be what version 1 and 1.3 &lt;a href="http://code.google.com/apis/ajax/documentation/#Versioning"&gt;aliases&lt;/a&gt; point to.&lt;br /&gt;&lt;br /&gt;YUI's new version, 2.7.0, includes a new stylesheet utility to do dynamic CSS without looping through DOM nodes as well as some enhancements to existing functionality such as charts, DOM collection, and tree view.  Furthermore, YUI is maintaining their image as a library for professionals by beginning to add IE8 support in preparation for Microsoft's upcoming launch.&lt;br /&gt;&lt;br /&gt;I'd also like to remind you that all public updates to our APIs can be followed on our &lt;a href="http://ajax-api-alerts.blogspot.com/"&gt;Google AJAX API Alerts blog&lt;/a&gt;.  That blog is meant for minor API additions/updates/fixes, and in the future these alerts will only be posted there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29072373-5533132372290011666?l=googleajaxsearchapi.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/blogspot/RBev?a=gCaksQmU"&gt;&lt;img src="http://feeds.feedburner.com/~f/blogspot/RBev?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/blogspot/RBev?a=udjWG4J1"&gt;&lt;img src="http://feeds.feedburner.com/~f/blogspot/RBev?i=udjWG4J1" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RBev/~4/UPvBwlBE4LI" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/5533132372290011666?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/5533132372290011666?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RBev/~3/UPvBwlBE4LI/jquery-yui-updates.html" title="jQuery, YUI updates" /><author><name>Ben Lisbakken</name><uri>http://www.blogger.com/profile/07154034155008127880</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11191818286118328776" /></author><feedburner:origLink>http://googleajaxsearchapi.blogspot.com/2009/02/jquery-yui-updates.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMFQ345fCp7ImA9WxVQF04.&quot;"><id>tag:blogger.com,1999:blog-29072373.post-6456343174651899629</id><published>2009-02-03T09:47:00.000-08:00</published><updated>2009-02-03T22:53:32.024-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-03T22:53:32.024-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="News Search" /><category scheme="http://www.blogger.com/atom/ns#" term="AJAX Search API" /><title>Adding Google News to Your Website</title><content type="html">Today we are launching a new extension to the &lt;a href="http://code.google.com/apis/ajaxsearch/"&gt;AJAX Search API&lt;/a&gt;, a Google News-based element.  This element embeds a news slideshow on your site, letting your users see headlines and previews from Google News based on queries that you've selected. Here is an example of the NewsShow in action:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;iframe src="http://www.google.com/uds/modules/elements/newsshow/iframe.html?format=300x250" frameborder="0" width="300" height="250" marginwidth="0" marginheight="0"&gt;&lt;/iframe&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;It couldn't be easier to add this to your site.  Simply include this iframe:&lt;br /&gt;&lt;br /&gt;&lt;pre class="code" style="overflow:scroll;"&gt;&lt;br /&gt;&amp;lt;iframe src="http://www.google.com/uds/modules/elements/newsshow/iframe.html?format=300x250"&lt;br /&gt;        frameborder="0" width="300" height="250"&lt;br /&gt;        marginwidth="0" marginheight="0"&amp;gt;&lt;br /&gt;&amp;lt;/iframe&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The element comes in two standard sizes: &lt;a href="http://www.google.com/uds/modules/elements/newsshow/iframe.html?format=728x90"&gt;728x90&lt;/a&gt; and &lt;a href="http://www.google.com/uds/modules/elements/newsshow/iframe.html?format=300x250"&gt;300x250&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Adding a NewsShow to your site in this way allows you to customize its shape and content with URL arguments.  Simply input your parameters into our &lt;a href="http://code.google.com/apis/ajaxsearch/documentation/newsshow/wizard.html"&gt;wizard&lt;/a&gt; and we'll build the code for you.  Or, for greater control over the NewsShow's look and feel, you can call the classes directly.  Check out the &lt;a href="http://code.google.com/apis/ajaxsearch/documentation/newsshow/"&gt;documentation&lt;/a&gt; for details and the &lt;a href="http://code.google.com/apis/ajax/playground/#news_show"&gt;Code Playground&lt;/a&gt; to try your hand at customizing.&lt;br /&gt;&lt;br /&gt;As always, let us know what you think in the &lt;a href="http://groups.google.com/group/Google-AJAX-Search-API"&gt;Google AJAX API developer forum&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Note:  Earlier this evening a reader pointed out a typo in the iframe snippet which has since been corrected.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29072373-6456343174651899629?l=googleajaxsearchapi.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/blogspot/RBev?a=OTBHN9cP"&gt;&lt;img src="http://feeds.feedburner.com/~f/blogspot/RBev?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/blogspot/RBev?a=HxzxdHC1"&gt;&lt;img src="http://feeds.feedburner.com/~f/blogspot/RBev?i=HxzxdHC1" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RBev/~4/xnBy94Zf4ZI" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/6456343174651899629?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/6456343174651899629?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RBev/~3/xnBy94Zf4ZI/adding-google-news-to-your-website.html" title="Adding Google News to Your Website" /><author><name>Adam Feldman</name><uri>http://www.blogger.com/profile/15563122400987772430</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="13752713238663756264" /></author><feedburner:origLink>http://googleajaxsearchapi.blogspot.com/2009/02/adding-google-news-to-your-website.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkECQXc-fip7ImA9WxVRFko.&quot;"><id>tag:blogger.com,1999:blog-29072373.post-5179298436567072039</id><published>2009-01-22T10:01:00.000-08:00</published><updated>2009-01-22T17:37:40.956-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-22T17:37:40.956-08:00</app:edited><title>Playgrounds and alerts</title><content type="html">I recently launched a new product to help developers learn our APIs.  It's an open source framework for showing Javascript code samples.  The tool allows users to click through samples so that they can edit code and see their changes live.  In order to be a more practical tool for code editing, I put "save" and "export" features in there.  You can read more about it on &lt;a href="http://google-code-updates.blogspot.com/2009/01/playing-around-with-googles-ajax-apis.html"&gt;the official blog post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I would also like to point you at a new blog the AJAX APIs team will be maintaining: the &lt;a href="http://ajax-api-alerts.blogspot.com/"&gt;AJAX APIs Alert Blog&lt;/a&gt;.  Whether you know it or not (or believe it or not!) we are constantly making changes to the APIs.  New features, bug fixes, tweaks, etc.  In the past we haven't had a way of communicating these changes to you since they can be small changes and not worth a whole blog post here.  Furthermore, there are those of you that want to know when we update the &lt;a href="http://code.google.com/apis/ajaxlibs/"&gt;Javascript libraries&lt;/a&gt; that we host.  So from here on out, &lt;a href="http://ajax-api-alerts.blogspot.com/"&gt;that blog&lt;/a&gt; will be the new home for these "alerts".  Posts will be short, to the point and we will try to update it with all public changes, so &lt;a  href="http://ajax-api-alerts.blogspot.com/feeds/posts/default"&gt;subscribe now&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29072373-5179298436567072039?l=googleajaxsearchapi.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/blogspot/RBev?a=bJtre1HI"&gt;&lt;img src="http://feeds.feedburner.com/~f/blogspot/RBev?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/blogspot/RBev?a=XdUIOdtQ"&gt;&lt;img src="http://feeds.feedburner.com/~f/blogspot/RBev?i=XdUIOdtQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RBev/~4/5AZCyfiHLvU" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/5179298436567072039?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/5179298436567072039?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RBev/~3/5AZCyfiHLvU/playgrounds-and-alerts.html" title="Playgrounds and alerts" /><author><name>Ben Lisbakken</name><uri>http://www.blogger.com/profile/07154034155008127880</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11191818286118328776" /></author><feedburner:origLink>http://googleajaxsearchapi.blogspot.com/2009/01/playgrounds-and-alerts.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0INQXozfyp7ImA9WxRbE04.&quot;"><id>tag:blogger.com,1999:blog-29072373.post-1618242440408531425</id><published>2008-11-21T09:32:00.000-08:00</published><updated>2008-12-03T13:26:30.487-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-03T13:26:30.487-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="AJAX Libraries API" /><title>Welcome YUI!, script.aculo.us gets fresh</title><content type="html">We've been hosting most of the big powerhouse Javascript libraries and so far it's been a huge success.  However, without YUI!, our collection has been incomplete.  Well, I'm not saying that now we're complete and won't add more libraries, just that we're less incomplete than we were... you know what I mean.&lt;br /&gt;&lt;br /&gt;Anyways, after getting legal approval (people actually read those licenses), we &lt;a href="http://code.google.com/apis/ajaxlibs/documentation/index.html#yui"&gt;pushed it live&lt;/a&gt;.  We are equally as excited about this as &lt;a href="http://yuiblog.com/blog/2008/11/19/yui-google/"&gt;Yahoo!&lt;/a&gt; and the &lt;a href="http://ajaxian.com/archives/cdns-gaining-broader-use-with-javascript-libraries"&gt;Javascript community&lt;/a&gt;.&lt;br /&gt;So let's take a look at how you use it:&lt;br /&gt;&lt;pre class="code"&gt;&amp;lt;head&amp;gt;&lt;br /&gt;  &amp;lt;script src="http://www.google.com/jsapi" type="text/javascript"&lt;br /&gt;          charset="utf-8"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;  &amp;lt;script type="text/javascript" charset="utf-8"&amp;gt;&lt;br /&gt;  google.load('yui', '2.6.0');&lt;br /&gt;  function init() {&lt;br /&gt;    var loader = new YAHOO.util.YUILoader({&lt;br /&gt;      require: ["button", "calendar"],&lt;br /&gt;      base: "http://ajax.googleapis.com/ajax/libs/yui/2.6.0/build/",&lt;br /&gt;      onSuccess: function() {&lt;br /&gt;        // start playing with buttons and calendars!&lt;br /&gt;      }&lt;br /&gt;    });&lt;br /&gt;    loader.insert();&lt;br /&gt;  }&lt;br /&gt;  google.setOnLoadCallback(init);&lt;br /&gt;  &amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;  &amp;lt;div id="calContainer"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;/pre&gt;That code will load the YUI loader which then loads the button and calendar widgets (combined as one script) and calls onSuccess when they are loaded.  If lazy loading scripts isn't your thing, then you can use the &lt;a href="http://developer.yahoo.com/yui/articles/hosting/?button&amp;calendar&amp;MIN&amp;nocombine&amp;basepath&amp;http://ajax.googleapis.com/ajax/libs/yui/2.6.0/build/&amp;google"&gt;dependency configurator&lt;/a&gt; to configure the perfect script URL.  In my case, to achieve the same results as above, I would use:&lt;br /&gt;&lt;pre class="code" style="overflow:scroll;"&gt;&amp;lt;link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/yui/2.6.0/build/button/assets/skins/sam/button.css"&amp;gt; &lt;br /&gt;&amp;lt;link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/yui/2.6.0/build/calendar/assets/skins/sam/calendar.css"&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/yui/2.6.0/build/yahoo-dom-event/yahoo-dom-event.js"&amp;gt;&amp;lt;/script&amp;gt; &lt;br /&gt;&amp;lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/yui/2.6.0/build/element/element-beta-min.js"&amp;gt;&amp;lt;/script&amp;gt; &lt;br /&gt;&amp;lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/yui/2.6.0/build/button/button-min.js"&amp;gt;&amp;lt;/script&amp;gt; &lt;br /&gt;&amp;lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/yui/2.6.0/build/calendar/calendar-min.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;Also, we've updated &lt;a href="http://code.google.com/apis/ajaxlibs/documentation/#script_aculo_us"&gt;script.aculo.us&lt;/a&gt; to  the new minor release version 1.8.2.  For those of you who are using our aliases, you've already been updated!&lt;br /&gt;&lt;br /&gt;As always, stop by in our &lt;a href="http://groups.google.com/group/Google-AJAX-Search-API"&gt;group&lt;/a&gt; or &lt;a href="http://www.mibbit.com/?server=irc.freenode.net&amp;channel=%23googleajaxapis "&gt;IRC channel&lt;/a&gt; to give us a piece of your mind.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29072373-1618242440408531425?l=googleajaxsearchapi.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/blogspot/RBev?a=i8PbxBgg"&gt;&lt;img src="http://feeds.feedburner.com/~f/blogspot/RBev?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/blogspot/RBev?a=lnglp3hE"&gt;&lt;img src="http://feeds.feedburner.com/~f/blogspot/RBev?i=lnglp3hE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RBev/~4/9B4nviPRgWQ" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/1618242440408531425?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/1618242440408531425?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RBev/~3/9B4nviPRgWQ/welcome-yui-scriptaculous-gets-fresh.html" title="Welcome YUI!, script.aculo.us gets fresh" /><author><name>Ben Lisbakken</name><uri>http://www.blogger.com/profile/07154034155008127880</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11191818286118328776" /></author><feedburner:origLink>http://googleajaxsearchapi.blogspot.com/2008/11/welcome-yui-scriptaculous-gets-fresh.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQMQ384fyp7ImA9WxRVFk8.&quot;"><id>tag:blogger.com,1999:blog-29072373.post-7515998404774281616</id><published>2008-11-13T14:58:00.000-08:00</published><updated>2008-11-13T15:53:02.137-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T15:53:02.137-08:00</app:edited><title>Local Search results now include China</title><content type="html">We're pleased to announce the addition of local search for China.  For users already using the AJAX Search API for local search, you should now be able to search for businesses in China without having to make any changes.  Try typing "hotels in Beijing" in your site or app which uses the Google AJAX Search API.  You should see some results:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://3.bp.blogspot.com/_qU0w4wiK3GA/SRy9DWL_0gI/AAAAAAAAAA8/YcmXo36XAIs/s320/China+Local+Search+result.jpg"&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;To take advantage of local search functionality, take a look at the &lt;a href="http://code.google.com/apis/ajaxsearch/"&gt;AJAX Search API&lt;/a&gt;.  The samples &lt;a href="http://code.google.com/apis/ajaxsearch/local.html"&gt;here&lt;/a&gt; are also particularly useful.&lt;br /&gt;&lt;br /&gt;If you have any feedback or comments, please drop by our &lt;a href="http://groups.google.com/group/Google-AJAX-Search-API"&gt;Google Group&lt;/a&gt; or new IRC channel (irc details can be found at the bottom of &lt;a href="http://googleajaxsearchapi.blogspot.com/2008/11/swfobject-library-added-to-libraries.html"&gt;this post&lt;/a&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29072373-7515998404774281616?l=googleajaxsearchapi.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/blogspot/RBev?a=JwU8Szr3"&gt;&lt;img src="http://feeds.feedburner.com/~f/blogspot/RBev?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/blogspot/RBev?a=HyCaJUwA"&gt;&lt;img src="http://feeds.feedburner.com/~f/blogspot/RBev?i=HyCaJUwA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RBev/~4/id7Pqya33L0" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/7515998404774281616?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/7515998404774281616?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RBev/~3/id7Pqya33L0/local-search-results-now-include-china.html" title="Local Search results now include China" /><author><name>Adam Feldman</name><uri>http://www.blogger.com/profile/15563122400987772430</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="13752713238663756264" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_qU0w4wiK3GA/SRy9DWL_0gI/AAAAAAAAAA8/YcmXo36XAIs/s72-c/China+Local+Search+result.jpg" height="72" width="72" /><feedburner:origLink>http://googleajaxsearchapi.blogspot.com/2008/11/local-search-results-now-include-china.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ACRns9eCp7ImA9WxRVFEk.&quot;"><id>tag:blogger.com,1999:blog-29072373.post-5321462776708354928</id><published>2008-11-10T19:02:00.000-08:00</published><updated>2008-11-11T14:16:07.560-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-11T14:16:07.560-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="AJAX Libraries API" /><title>SWFObject Library Added to Libraries API</title><content type="html">If you're a Flash nut then you probably know about the &lt;a href="http://code.google.com/p/swfobject/"&gt;SWFObject&lt;/a&gt; Javascript library.  I'm not, so I didn't.  However, since I promised myself I would play with Flex soon I am very happy that a &amp;quot;Flasher&amp;quot; &lt;a href="http://code.google.com/p/google-ajax-apis/issues/detail?id=126"&gt;suggested&lt;/a&gt; that we add it to our AJAX Libraries API.  I took a look at it and found out that it's a great little must-have library!&lt;br /&gt;&lt;br /&gt;See, embedding a Flash video on a page is actually more complicated than it should be.  You can't just throw a tag on the page with some attributes and expect it to work.  In fact, to embed a Flash file there are different methods for different browsers such as using an &amp;lt;embed&amp;gt; vs. &amp;lt;object&amp;gt; as well as setting the parameters for the file.&lt;br /&gt;&lt;br /&gt;The SWFObject library simplifies the process so that all you need to worry about is including their Javascript library and using a single method to embed your Flash on the page in a safe, cross-browser manner.  It also has a few extra utility functions, such as setting a load event for the Flash object and detecting the user's Flash version.&lt;br /&gt;&lt;br /&gt;Because this library is open source, extremely popular, and so handy, we have &lt;a href="http://code.google.com/apis/ajaxlibs/documentation/index.html#swfobject"&gt;added it to our AJAX Libraries API&lt;/a&gt; so that our caching benefits can be reaped.  If you want to express your extreme happiness then you can do so in our new IRC channel:&lt;br /&gt;server: irc.freenode.net&lt;br /&gt;channel: #googleajaxapis&lt;br /&gt;&lt;a href="http://www.mibbit.com/?server=irc.freenode.net&amp;channel=%23googleajaxapis"&gt;http://www.mibbit.com/?server=irc.freenode.net&amp;channel=%23googleajaxapis&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29072373-5321462776708354928?l=googleajaxsearchapi.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/blogspot/RBev?a=sAkQvVgh"&gt;&lt;img src="http://feeds.feedburner.com/~f/blogspot/RBev?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/blogspot/RBev?a=3oHKlYc1"&gt;&lt;img src="http://feeds.feedburner.com/~f/blogspot/RBev?i=3oHKlYc1" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RBev/~4/D_ZHYccoN3E" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/5321462776708354928?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/5321462776708354928?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RBev/~3/D_ZHYccoN3E/swfobject-library-added-to-libraries.html" title="SWFObject Library Added to Libraries API" /><author><name>Ben Lisbakken</name><uri>http://www.blogger.com/profile/07154034155008127880</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11191818286118328776" /></author><feedburner:origLink>http://googleajaxsearchapi.blogspot.com/2008/11/swfobject-library-added-to-libraries.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUAASHw5eCp7ImA9WxRWF04.&quot;"><id>tag:blogger.com,1999:blog-29072373.post-3752868313464393581</id><published>2008-11-03T10:36:00.001-08:00</published><updated>2008-11-03T10:42:29.220-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-03T10:42:29.220-08:00</app:edited><title>Styling the SearchControl Guest Post</title><content type="html">So, the other day, I was asked by the AJAX APIs dev team if I'd like to write a guest blog post, but they didn't tell me what to write about. I thought about telling you how the AJAX APIs revolutionized how I think about life, design websites, and slice bread, but then I realized that I buy my bread pre-sliced. So I started going back through the group looking for common questions or themes to threads, and I realized that a huge portion of the questions asked can be summed up like this:  "How do I style the &lt;code&gt;google.search.SearchControl&lt;/code&gt;?" For instance, how would one make it so that only a result's title and URL appear (i.e., the description is not visible), or even just the URL? What if you want to change some of the default colors? What if you, being the stylish computer geek that you are, want to make your SearchControl into a 24th century Starfleet console to fit in with that first-season spandex Star Trek: The Next Generation uniform you're wearing right now?&lt;br /&gt;&lt;br /&gt;Well, you're in luck! Using Mozilla Firefox with the Firebug add-on installed (an absolute must-have for any web developer, by the way), you can do all this and more simply by inspecting the structure of the default search control and taking advantage of the fact that almost every one of its individual elements is given at least one className that can be used with Cascading Style Sheets to apply different style rules.  We've put together a spectacular video to provide a very brief overview of using Firefox and Firebug to inspect the structure (and tinker with) the structure of the control. &lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/2YIAX3OSaNE&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/2YIAX3OSaNE&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;For even more information on how you can do more with Firefox and Firebug, you'll want to check out &lt;a href="http://code.google.com/apis/ajaxsearch/articles/firebug.html"&gt;Ben Lisbakken's excellent tutorial&lt;/a&gt;, which includes even more video! And for good measure, we've included the control's structure (complete with a few of my own comments) below:&lt;br /&gt;&lt;br /&gt;&lt;pre class="code" style="height: 500px;overflow: auto;"&gt;&amp;lt;div class="gsc-control"&amp;gt;&lt;br /&gt;    &amp;lt;!-- FYI: This form is the same as the google.search.SearchForm --&amp;gt;&lt;br /&gt;    &amp;lt;form class="gsc-search-box"&amp;gt;&lt;br /&gt;        &amp;lt;table class="gsc-search-box"&amp;gt;&lt;br /&gt;            &amp;lt;tbody&amp;gt;&lt;br /&gt;                &amp;lt;tr&amp;gt;&lt;br /&gt;                    &amp;lt;td class="gsc-input"&amp;gt;&lt;br /&gt;                        &amp;lt;!-- This next input is the search box itself --&amp;gt;&lt;br /&gt;                        &amp;lt;input class="gsc-input/&amp;gt;&lt;br /&gt;                    &amp;lt;/td&amp;gt;&lt;br /&gt;                    &amp;lt;td class="gsc-search-button"&amp;gt;&lt;br /&gt;                        &amp;lt;!-- This next input is the search button itself --&amp;gt;&lt;br /&gt;                        &amp;lt;input class="gsc-search-button"/&amp;gt;&lt;br /&gt;                    &amp;lt;/td&amp;gt;&lt;br /&gt;                    &amp;lt;td class="gsc-clear-button"&amp;gt;&lt;br /&gt;                        &amp;lt;!-- This next div is the clear button (i.e., the little x) --&amp;gt;&lt;br /&gt;                        &amp;lt;div class="gsc-clear-button"/&amp;gt;&lt;br /&gt;                    &amp;lt;/td&amp;gt;&lt;br /&gt;                &amp;lt;/tr&amp;gt;&lt;br /&gt;            &amp;lt;/tbody&amp;gt;&lt;br /&gt;        &amp;lt;/table&amp;gt;&lt;br /&gt;        &amp;lt;table class="gsc-branding"&amp;gt;&lt;br /&gt;            &amp;lt;tbody&amp;gt;&lt;br /&gt;                &amp;lt;tr&amp;gt;&lt;br /&gt;                    &amp;lt;td class="gsc-branding-user-defined"/&amp;gt;&lt;br /&gt;                    &amp;lt;td class="gsc-branding-text"&amp;gt;&lt;br /&gt;                        &amp;lt;div class="gsc-branding-text"&amp;gt;powered by&amp;lt;/div&amp;gt;&lt;br /&gt;                    &amp;lt;/td&amp;gt;&lt;br /&gt;                    &amp;lt;td class="gsc-branding-img"&amp;gt;&lt;br /&gt;                        &amp;lt;img class="gsc-branding-img"/&amp;gt;&lt;br /&gt;                    &amp;lt;/td&amp;gt;&lt;br /&gt;                &amp;lt;/tr&amp;gt;&lt;br /&gt;            &amp;lt;/tbody&amp;gt;&lt;br /&gt;        &amp;lt;/table&amp;gt;&lt;br /&gt;    &amp;lt;/form&amp;gt;&lt;br /&gt;    &amp;lt;!-- In tabbed mode, this is where the tabs will appear; in stacked mode, this will be absent! --&amp;gt;&lt;br /&gt;    &amp;lt;div class="gsc-tabsArea"&amp;gt;&lt;br /&gt;        &amp;lt;!-- The following div would be the active tab --&amp;gt;&lt;br /&gt;        &amp;lt;div class="gsc-tabHeader gsc-tabhActive"/&amp;gt;&lt;br /&gt;        &amp;lt;!-- These spacer divs will appear AFTER every tab to do exactly what their className would imply --&amp;gt;&lt;br /&gt;        &amp;lt;div class="gs-spacer"/&amp;gt;&lt;br /&gt;        &amp;lt;!-- And this one would be an inactive tab --&amp;gt;&lt;br /&gt;        &amp;lt;div class="gsc-tabHeader gsc-tabhInactive"/&amp;gt;&lt;br /&gt;        &amp;lt;div class="gs-spacer"/&amp;gt;&lt;br /&gt;    &amp;lt;/div&amp;gt;&lt;br /&gt;    &amp;lt;div class="gsc-resultsBox-visible"&amp;gt;&lt;br /&gt;        &amp;lt;!-- The next divs contain the actual results. The classes in square brackets are ONLY present in TABBED mode --&amp;gt;&lt;br /&gt;        &amp;lt;!-- This would be the active tab --&amp;gt;&lt;br /&gt;        &amp;lt;div class="gsc-resultsRoot [gsc-tabData gsc-tabdActive]"&amp;gt;&lt;br /&gt;            &amp;lt;table class="gsc-resultsHeader"&amp;gt;&lt;br /&gt;                &amp;lt;tbody&amp;gt;&lt;br /&gt;                    &amp;lt;tr&amp;gt;&lt;br /&gt;                        &amp;lt;td class="gsc-twiddleRegionCell gsc-twiddleRegion-opened"&amp;gt;&lt;br /&gt;                            &amp;lt;div class="gsc-twiddle"&amp;gt;&lt;br /&gt;                                &amp;lt;!-- This next div will contain your searcher's title or label (e.g., Local), but it won't be visible in tabbed mode --&amp;gt;&lt;br /&gt;                                &amp;lt;div class="gsc-title"/&amp;gt;&lt;br /&gt;                            &amp;lt;/div&amp;gt;&lt;br /&gt;                            &amp;lt;!-- This next div will contain your search's estimated result count, but it's invisible in tabbed mode, too! --&amp;gt;&lt;br /&gt;                            &amp;lt;div class="gsc-stats"&amp;gt;&lt;br /&gt;                            &amp;lt;!-- This is the selector that chooses 1, 4, or 8 visible results. Please note that only ONE of the options in square brackets will be visible --&amp;gt;&lt;br /&gt;                            &amp;lt;div class="gsc-results-selector [gsc-one-result-active OR gsc-more-results-active OR gsc-all-results-active]"&amp;gt;&lt;br /&gt;                                &amp;lt;div class="gsc-result-selector gsc-one-result"/&amp;gt;&lt;br /&gt;                                &amp;lt;div class="gsc-result-selector gsc-more-results"/&amp;gt;&lt;br /&gt;                                &amp;lt;div class="gsc-result-selector gsc-all-results"/&amp;gt;&lt;br /&gt;                            &amp;lt;/div&amp;gt;&lt;br /&gt;                        &amp;lt;/td&amp;gt;&lt;br /&gt;                        &amp;lt;td class="gsc-configLabelCell"&amp;gt;&lt;br /&gt;                            &amp;lt;!-- This next span will only be present if the searcher has configuration options --&amp;gt;&lt;br /&gt;                            &amp;lt;!-- Also, it will only have ONE of the options in square brackets, depending on whether or not the configuration form is visible or not --&amp;gt;&lt;br /&gt;                            &amp;lt;span class="gsc-configLabel [gsc-twiddle-closed OR gsc-twiddle-opened]"/&amp;gt;&lt;br /&gt;                        &amp;lt;/td&amp;gt;&lt;br /&gt;                    &amp;lt;/tr&amp;gt;&lt;br /&gt;                &amp;lt;/tbody&amp;gt;&lt;br /&gt;            &amp;lt;/table&amp;gt;&lt;br /&gt;            &amp;lt;!-- This next div is the configuration form for a searcher. It is only present if the searcher has configuration options --&amp;gt;&lt;br /&gt;            &amp;lt;!-- The exact className of the config form will depend on the type of searcher. So you'll only have ONE of the options below.  You can probably figure out which one your searcher will have --&amp;gt;&lt;br /&gt;            &amp;lt;!-- By the way, I have no idea why it's gsc-locationConfig instead of gsc-localConfig :) --&amp;gt;&lt;br /&gt;            &amp;lt;div class="gsc-config [gsc-locationConfig OR gsc-videoConfig OR gsc-blogConfig OR gsc-newsConfig OR gsc-patentConfig]"&amp;gt;&lt;br /&gt;                &amp;lt;!-- The exact content of the config div will vary depending on your searcher's options --&amp;gt;&lt;br /&gt;                &amp;lt;!-- Use Firefox with Firebug to explore the possibilities here! --&amp;gt;&lt;br /&gt;            &amp;lt;/div&amp;gt;&lt;br /&gt;            &amp;lt;div class="gsc-results [gsc-localResult OR gsc-webResult OR gsc-blogResult OR gsc-newsResult OR gsc-imageResult OR gsc-bookResult OR gsc-patentResult OR gsc-videoResult]"&amp;gt;&lt;br /&gt;                &amp;lt;!-- This is your FIRST actual search result. All results will follow this pattern --&amp;gt;&lt;br /&gt;                &amp;lt;!-- Please note, again, that only ONE of the classNames in the square brackets will apply, depending on the searcher --&amp;gt;&lt;br /&gt;                &amp;lt;div class="gsc-result [gsc-localResult OR gsc-webResult OR gsc-blogResult OR gsc-newsResult OR gsc-imageResult OR gsc-bookResult OR gsc-patentResult OR gsc-videoResult]"&amp;gt;&lt;br /&gt;                    &amp;lt;!-- The contents of this div will be the same as outlined in the documentation for your searcher's results --&amp;gt;&lt;br /&gt;                &amp;lt;/div&amp;gt;&lt;br /&gt;                &amp;lt;div class="gsc-expansionArea"&amp;gt;&lt;br /&gt;                    &amp;lt;!-- This is where the REST of your search results show up, again following the same pattern as above --&amp;gt;&lt;br /&gt;                &amp;lt;/div&amp;gt;&lt;br /&gt;            &amp;lt;/div&amp;gt;&lt;br /&gt;        &amp;lt;/div&amp;gt;&lt;br /&gt;        &amp;lt;!-- And the inactive one --&amp;gt;&lt;br /&gt;        &amp;lt;div class="gsc-resultsRoot [gsc-tabData gsc-tabdInactive]"&amp;gt;&lt;br /&gt;            &amp;lt;!-- All the rest of the structure of this is the same as above --&amp;gt;&lt;br /&gt;    &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So, thanks to Firefox and Firebug, we have access to the SearchControl's structure.  Now we can get to work making our control look like one of those 24th-century consoles that we see every day on the starship Enterprise! To get this done, we're going to start with the stock "Hello, world" example for the AJAX Search API. Then we're going to remove the style element that comes with it and plug in a new external stylesheet below the inline script that initializes the whole thing. &lt;br /&gt;&lt;br /&gt;Once that's done, we need to (a) change a bunch of colors; (b) rework a number of background images; and (c) open a small hole in the space-time continuum to get ourselves a starship console to put it all on. Okay, so that last one isn't exactly possible, but we can do all the rest with a &lt;a href="http://jgeerdes.home.mchsi.com/google/googleAjaxApiSearchControlStyled.css"&gt;little CSS&lt;/a&gt;. And the whole thing, put together, looks &lt;a href="http://jgeerdes.home.mchsi.com/google/googleAjaxApiSearchControlStyled.html"&gt;like this&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now, you will notice that a number of those rules have complex selectors (e.g., .gsc-resultsHeader td.gsc-twiddle-opened...).  This is because Google's default CSS is rather specific in places.  And it's also why Firefox with Firebug is so very important.  It really makes the whole process almost painless.&lt;br /&gt;&lt;br /&gt;So there you have it: style. Well, for your SearchControl, at least. Next time, we'll talk about why the Starfleet quartermaster abandoned spandex.&lt;br /&gt;&lt;br /&gt;Until then, happy styling!&lt;br /&gt;&lt;br /&gt;Jeremy R. Geerdes&lt;br /&gt;Generally Cool Guy&lt;br /&gt;jrgeerdes@gmail.com&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;p.s. What cool custom designs have you come up with?  Share them in the &lt;a href="http://groups.google.com/group/Google-AJAX-Search-API"&gt;Google Group&lt;/a&gt;!  Ben Lisbakken has promised some Google schwag for interesting designs...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29072373-3752868313464393581?l=googleajaxsearchapi.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/blogspot/RBev?a=sHHSCOUJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/blogspot/RBev?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/blogspot/RBev?a=aDd5UWwA"&gt;&lt;img src="http://feeds.feedburner.com/~f/blogspot/RBev?i=aDd5UWwA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RBev/~4/YZPgZQadzv8" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/3752868313464393581?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/3752868313464393581?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RBev/~3/YZPgZQadzv8/styling-searchcontrol-guest-post.html" title="Styling the SearchControl Guest Post" /><author><name>Ben Lisbakken</name><uri>http://www.blogger.com/profile/07154034155008127880</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11191818286118328776" /></author><feedburner:origLink>http://googleajaxsearchapi.blogspot.com/2008/11/styling-searchcontrol-guest-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcAQ348cCp7ImA9WxRWE04.&quot;"><id>tag:blogger.com,1999:blog-29072373.post-2436643562402809429</id><published>2008-10-29T19:09:00.000-07:00</published><updated>2008-10-29T19:17:22.078-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-10-29T19:17:22.078-07:00</app:edited><title>MooTools 1.2.1</title><content type="html">MooTools v1.2.1 recently got released and we have received the thumbs up from the maintainers to host it, so the bits have been flipped and the pipes are ready to MOOve it over to you guys.&lt;br /&gt;&lt;br /&gt;But wait!!  Before you get started with 1.2.1, please note that the previous version we are hosting (1.11) and the new version (1.2.1) are incompatible.  So as not to break anyone out of the blue (and put them in a bad MOOd) we have frozen the version "1" alias to 1.11.  Here's what the aliases look like for MooTools:&lt;br /&gt;&lt;code&gt;google.load('mootools', '1')  // gives you version 1.11&lt;/code&gt;&lt;br /&gt;&lt;code&gt;google.load('mootools', '1.11')  // gives you version 1.11&lt;/code&gt;&lt;br /&gt;&lt;code&gt;google.load('mootools', '1.2.1') // gives you version 1.2.1&lt;/code&gt;&lt;br /&gt;... you get the picture.&lt;br /&gt;&lt;br /&gt;If you have some extra time, stop by the &lt;a href="http://groups.google.com/group/Google-AJAX-Search-API/"&gt;group&lt;/a&gt; and show us what you've been up to with MooTools.  Happy grazing!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29072373-2436643562402809429?l=googleajaxsearchapi.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/blogspot/RBev?a=u4Z4qlNr"&gt;&lt;img src="http://feeds.feedburner.com/~f/blogspot/RBev?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/blogspot/RBev?a=bRQsuhHQ"&gt;&lt;img src="http://feeds.feedburner.com/~f/blogspot/RBev?i=bRQsuhHQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RBev/~4/cEVMrdEHoo0" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/2436643562402809429?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/2436643562402809429?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RBev/~3/cEVMrdEHoo0/mootools-121.html" title="MooTools 1.2.1" /><author><name>Ben Lisbakken</name><uri>http://www.blogger.com/profile/07154034155008127880</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11191818286118328776" /></author><feedburner:origLink>http://googleajaxsearchapi.blogspot.com/2008/10/mootools-121.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEHQng6fCp7ImA9WxRQFE0.&quot;"><id>tag:blogger.com,1999:blog-29072373.post-7637043501735339234</id><published>2008-10-07T10:37:00.000-07:00</published><updated>2008-10-07T11:20:33.614-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-10-07T11:20:33.614-07:00</app:edited><title>New Languages for Translate and POST Interface</title><content type="html">We are pleased to announce two enhancements to our AJAX Language API.&lt;br /&gt;&lt;br /&gt;Thanks to the great efforts of the Google Translate team, the API is now able to support 11 additional languages for translation:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Catalan (ca)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Filipino (tl)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Hebrew (iw)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Indonesian (id)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Latvian (lv)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lithuanian (lt)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Serbian (sr)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Slovak (sk)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Slovenian (sl)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Ukrainian (uk)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Vietnamese (vi)&lt;/li&gt;&lt;/ul&gt;Also, we'd like to introduce the new POST interface.  Among other things, this can be used to send longer URLs by implementing a JavaScript bridge to, for example, Flash or Java using the &lt;a href="http://code.google.com/apis/ajaxlanguage/documentation/reference.html#_intro_fonje"&gt;RESTful interface&lt;/a&gt;.  For additional information, take a look around our &lt;a href="https://groups.google.com/group/Google-AJAX-Search-API"&gt;Google Group&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you have not already done so, please take a moment to familiarize yourself with the &lt;a href="http://code.google.com/apis/ajaxlanguage/terms.html"&gt;AJAX Language API terms&lt;/a&gt;&lt;a&gt;.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29072373-7637043501735339234?l=googleajaxsearchapi.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/blogspot/RBev?a=jUVii5lp"&gt;&lt;img src="http://feeds.feedburner.com/~f/blogspot/RBev?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/blogspot/RBev?a=sMnX49T3"&gt;&lt;img src="http://feeds.feedburner.com/~f/blogspot/RBev?i=sMnX49T3" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RBev/~4/PC1DIW2UaCE" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/7637043501735339234?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/7637043501735339234?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RBev/~3/PC1DIW2UaCE/new-languages-for-translate-and-post.html" title="New Languages for Translate and POST Interface" /><author><name>Adam Feldman</name><uri>http://www.blogger.com/profile/15563122400987772430</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="13752713238663756264" /></author><feedburner:origLink>http://googleajaxsearchapi.blogspot.com/2008/10/new-languages-for-translate-and-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUDRno_fSp7ImA9WxRSFU8.&quot;"><id>tag:blogger.com,1999:blog-29072373.post-6129388203011319716</id><published>2008-09-15T16:58:00.000-07:00</published><updated>2008-09-15T17:01:17.445-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-15T17:01:17.445-07:00</app:edited><title>Clarifying our TOS to allow additional uses</title><content type="html">As the AJAX APIs have undergone tremendous growth and adoption, developers have used these APIs in many new and exciting ways. When things move fast, sometimes details get left behind, and our Terms of Service has not been keeping up with the rapid rate of change. We want to make it clear that you can use these APIs in the context of websites, gadgets, mobile apps, desktop client apps, etc.  In response to your feedback, we've dusted off and updated the &lt;a href="http://code.google.com/apis/ajaxsearch/terms.html"&gt;AJAX Search API terms&lt;/a&gt; and the &lt;a href="http://code.google.com/apis/ajaxlanguage/terms.html"&gt;AJAX Language API terms&lt;/a&gt;. The primary change was replacing "website" with "Property" that's defined as a "website, application, or other product".&lt;br /&gt;&lt;br /&gt;As always, thank you for the feedback.  Keep your &lt;a href="http://groups.google.com/group/Google-AJAX-Search-API"&gt;comments and suggestions&lt;/a&gt; coming! We look forward to all of your amazing creations using the Google AJAX APIs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29072373-6129388203011319716?l=googleajaxsearchapi.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/blogspot/RBev?a=NCVJgOvW"&gt;&lt;img src="http://feeds.feedburner.com/~f/blogspot/RBev?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/blogspot/RBev?a=Tkwewmr8"&gt;&lt;img src="http://feeds.feedburner.com/~f/blogspot/RBev?i=Tkwewmr8" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RBev/~4/7scy0eH2rVs" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/6129388203011319716?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29072373/posts/default/6129388203011319716?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RBev/~3/7scy0eH2rVs/clarifying-our-tos-to-allow-additional.html" title="Clarifying our TOS to allow additional uses" /><author><name>Adam Feldman</name><uri>http://www.blogger.com/profile/15563122400987772430</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="13752713238663756264" /></author><feedburner:origLink>http://googleajaxsearchapi.blogspot.com/2008/09/clarifying-our-tos-to-allow-additional.html</feedburner:origLink></entry></feed>
