a:54:{s:9:"#provides";s:28:"dojox.data.GoogleSearchStore";s:9:"#resource";s:25:"data/GoogleSearchStore.js";s:9:"#requires";a:1:{i:0;a:3:{i:0;s:6:"common";i:1;s:14:"dojo.io.script";i:2;s:4:"dojo";}}s:28:"dojox.data.GoogleSearchStore";a:6:{s:4:"type";s:8:"Function";s:7:"summary";s:44:"Initializer for the GoogleSearchStore store.";s:10:"parameters";a:1:{s:4:"args";a:1:{s:4:"type";s:6:"Object";}}s:6:"source";s:226:" if(args){ if(args.label){ this.label = args.label; } if(args.key){ this._key = args.key; } if(args.lang){ this._lang = args.lang; } } this._id = dojox.data.GoogleSearchStore.prototype._id++;";s:11:"description";s:338:"The GoogleSearchStore is a Datastore interface to the Google search service. The constructor accepts the following arguments: ";s:9:"classlike";b:1;}s:32:"dojox.data.GoogleSearchStore._id";a:5:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:4:"type";s:7:"Integer";s:7:"summary";s:35:"A unique identifier for this store.";s:8:"instance";s:28:"dojox.data.GoogleSearchStore";s:7:"private";b:1;}s:42:"dojox.data.GoogleSearchStore._requestCount";a:4:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:4:"type";s:7:"Integer";s:7:"summary";s:120:"A counter for the number of requests made. This is used to define the callback function that GoogleSearchStore will use.";s:7:"private";b:1;}s:39:"dojox.data.GoogleSearchStore._googleUrl";a:4:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:4:"type";s:6:"String";s:7:"summary";s:38:"The URL to Googles search web service.";s:7:"private";b:1;}s:38:"dojox.data.GoogleSearchStore._storeRef";a:4:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:4:"type";s:6:"String";s:7:"summary";s:78:"The internal reference added to each item pointing at the store which owns it.";s:7:"private";b:1;}s:40:"dojox.data.GoogleSearchStore._attributes";a:4:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:4:"type";s:5:"Array";s:7:"summary";s:47:"The list of attributes that this store supports";s:7:"private";b:1;}s:34:"dojox.data.GoogleSearchStore.label";a:4:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:4:"type";s:6:"String";s:7:"summary";s:58:"The default attribute which acts as a label for each item.";s:8:"instance";s:28:"dojox.data.GoogleSearchStore";}s:34:"dojox.data.GoogleSearchStore._type";a:3:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:7:"private";b:1;s:7:"summary";s:0:"";}s:39:"dojox.data.GoogleSearchStore._queryAttr";a:3:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:7:"private";b:1;s:7:"summary";s:0:"";}s:42:"dojox.data.GoogleSearchStore._assertIsItem";a:6:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:4:"item";a:2:{s:4:"type";s:4:"item";s:7:"summary";s:50:"The item to test for being contained by the store.";}}s:6:"source";s:142:" if(!this.isItem(item)){ throw new Error("dojox.data.GoogleSearchStore: a function was passed an item argument that was not an item"); }";s:7:"summary";s:78:"This function tests whether the item passed in is indeed an item in the store.";s:7:"private";b:1;}s:47:"dojox.data.GoogleSearchStore._assertIsAttribute";a:6:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:9:"attribute";a:2:{s:4:"type";s:21:"attribute-name-string";s:7:"summary";s:55:"The attribute to test for being contained by the store.";}}s:6:"source";s:175:" if(typeof attribute !== "string"){ throw new Error("dojox.data.GoogleSearchStore: a function was passed an attribute argument that was not an attribute name string"); }";s:7:"summary";s:101:"This function tests whether the item passed in is indeed a valid 'attribute' like type for the store.";s:7:"private";b:1;}s:40:"dojox.data.GoogleSearchStore.getFeatures";a:4:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:4:"type";s:8:"Function";s:6:"source";s:45:" return { 'dojo.data.api.Read': true };";s:7:"summary";s:36:"See dojo.data.api.Read.getFeatures()";}s:37:"dojox.data.GoogleSearchStore.getValue";a:5:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:4:"type";s:8:"Function";s:10:"parameters";a:3:{s:4:"item";a:1:{s:4:"type";s:0:"";}s:9:"attribute";a:1:{s:4:"type";s:0:"";}s:12:"defaultValue";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:130:" var values = this.getValues(item, attribute); if(values && values.length > 0){ return values[0]; } return defaultValue;";s:7:"summary";s:33:"See dojo.data.api.Read.getValue()";}s:42:"dojox.data.GoogleSearchStore.getAttributes";a:5:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:4:"item";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:26:" return this._attributes;";s:7:"summary";s:38:"See dojo.data.api.Read.getAttributes()";}s:41:"dojox.data.GoogleSearchStore.hasAttribute";a:5:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:4:"type";s:8:"Function";s:10:"parameters";a:2:{s:4:"item";a:1:{s:4:"type";s:0:"";}s:9:"attribute";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:72:" if(this.getValue(item,attribute)){ return true; } return false;";s:7:"summary";s:38:"See dojo.data.api.Read.hasAttributes()";}s:41:"dojox.data.GoogleSearchStore.isItemLoaded";a:5:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:4:"item";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:28:" return this.isItem(item);";s:7:"summary";s:37:"See dojo.data.api.Read.isItemLoaded()";}s:37:"dojox.data.GoogleSearchStore.loadItem";a:5:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:11:"keywordArgs";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:57:" // summary: // See dojo.data.api.Read.loadItem()";s:7:"summary";s:33:"See dojo.data.api.Read.loadItem()";}s:37:"dojox.data.GoogleSearchStore.getLabel";a:5:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:4:"item";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:40:" return this.getValue(item,this.label);";s:7:"summary";s:33:"See dojo.data.api.Read.getLabel()";}s:47:"dojox.data.GoogleSearchStore.getLabelAttributes";a:5:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:4:"item";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:22:" return [this.label];";s:7:"summary";s:43:"See dojo.data.api.Read.getLabelAttributes()";}s:42:"dojox.data.GoogleSearchStore.containsValue";a:5:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:4:"type";s:8:"Function";s:10:"parameters";a:3:{s:4:"item";a:1:{s:4:"type";s:0:"";}s:9:"attribute";a:1:{s:4:"type";s:0:"";}s:5:"value";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:158:" var values = this.getValues(item,attribute); for(var i = 0; i < values.length; i++){ if(values[i] === value){ return true; } } return false;";s:7:"summary";s:38:"See dojo.data.api.Read.containsValue()";}s:38:"dojox.data.GoogleSearchStore.getValues";a:5:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:4:"type";s:8:"Function";s:10:"parameters";a:2:{s:4:"item";a:1:{s:4:"type";s:0:"";}s:9:"attribute";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:210:" this._assertIsItem(item); this._assertIsAttribute(attribute); var val = item[attribute]; if(dojo.isArray(val)) { return val; }else if(val !== undefined){ return [val]; }else{ return []; }";s:7:"summary";s:33:"See dojo.data.api.Read.getValue()";}s:35:"dojox.data.GoogleSearchStore.isItem";a:5:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:4:"item";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:80:" if(item && item[this._storeRef] === this){ return true; } return false;";s:7:"summary";s:31:"See dojo.data.api.Read.isItem()";}s:34:"dojox.data.GoogleSearchStore.close";a:5:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:7:"request";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:54:" // summary: // See dojo.data.api.Read.close()";s:7:"summary";s:30:"See dojo.data.api.Read.close()";}s:36:"dojox.data.GoogleSearchStore._format";a:7:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:4:"type";s:8:"Function";s:10:"parameters";a:2:{s:4:"item";a:1:{s:4:"type";s:0:"";}s:4:"name";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:61:" return item;//base implementation does not format any items";s:7:"returns";s:45:"base implementation does not format any items";s:7:"private";b:1;s:7:"summary";s:0:"";}s:34:"dojox.data.GoogleSearchStore.fetch";a:7:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:7:"request";a:2:{s:4:"type";s:1:"A";s:7:"summary";s:107:"request object fetchHandler: A function to call for fetched items errorHandler: A function to call on error";}}s:6:"source";s:5892:" request = request || {}; var scope = request.scope || dojo.global; if(!request.query || !request.query[this._queryAttr]){ if(request.onError){ request.onError.call(scope, new Error(this.declaredClass + ": A query must be specified, with a '" + [this._queryAttr] + "' parameter.")); return; } } //Make a copy of the request object, in case it is //modified outside the store in the middle of a request var query = request.query[this._queryAttr]; request = { query: { }, onComplete: request.onComplete, onError: request.onError, onItem: request.onItem, onBegin: request.onBegin, start: request.start, count: request.count }; request.query[this._queryAttr] = query; //Google's web api will only return a max of 8 results per page. var pageSize = 8; //Generate a unique function to be called back var callbackFn = "GoogleSearchStoreCallback_" + this._id + "_" + (++this._requestCount); //Build up the content to send the request for. //rsz is the result size, "large" gives 8 results each time var content = this._createContent(query, callbackFn, request); var firstRequest; if(typeof(request.start) === "undefined" || request.start === null){ request.start = 0; } if(!request.count){ request.count = pageSize; } firstRequest = {start: request.start - request.start % pageSize}; var _this = this; var handle = null; var searchUrl = this._googleUrl + this._type; var getArgs = { url: searchUrl, preventCache: true, content: content }; var items = []; var successfulReq = 0; var finished = false; var lastOnItem = request.start -1; var numRequests = 0; // Performs the remote request. function doRequest(req){ //Record how many requests have been made. numRequests ++; getArgs.content.context = getArgs.content.start = req.start; var deferred = dojo.io.script.get(getArgs); //We only set up the errback, because the callback isn't ever really used because we have //to link to the jsonp callback function.... deferred.addErrback(function(error){ if(request.onError){ request.onError.call(scope, error, request); } }); } // Function to handle returned data. var myHandler = function(start, data){ if(finished){return;} var results = _this._getItems(data); var cursor = data ? data['cursor']: null; if(results){ //Process the results, adding the store reference to them for(var i = 0; i < results.length && i + start < request.count + request.start; i++) { _this._processItem(results[i], data); items[i + start] = results[i]; } successfulReq ++; if(successfulReq == 1){ // After the first request, we know how many results exist. // So perform any follow up requests to retrieve more data. var pages = cursor ? cursor.pages : null; var firstStart = pages ? Number(pages[pages.length - 1].start) : 0; //Call the onBegin method if it exists if (request.onBegin){ var est = cursor ? cursor.estimatedResultCount : results.length; var total = est ? Math.min(est, firstStart + results.length) : firstStart + results.length; request.onBegin.call(scope, total, request); } // Request the next pages. var nextPage = (request.start - request.start % pageSize) + pageSize; var page = 1; while(pages){ if(!pages[page] || Number(pages[page].start) >= request.start + request.count){ break; } if(Number(pages[page].start) >= nextPage) { doRequest({start: pages[page].start}); } page++; } } // Call the onItem function on all retrieved items. if(request.onItem && items[lastOnItem + 1]){ do{ lastOnItem++; request.onItem.call(scope, items[lastOnItem], request); }while(items[lastOnItem + 1] && lastOnItem < request.start + request.count); } //If this is the last request, call final fetch handler. if(successfulReq == numRequests){ //Process the items... finished = true; //Clean up the function, it should never be called again dojo.global[callbackFn] = null; if(request.onItem){ request.onComplete.call(scope, null, request); }else{ items = items.slice(request.start, request.start + request.count); request.onComplete.call(scope, items, request); } } } }; var callbacks = []; var lastCallback = firstRequest.start - 1; var sortFn = function(a,b){ if(a.start < b.start){return -1;} if(b.start < a.start){return 1;} return 0; }; // Attach a callback function to the global namespace, where Google can call it. dojo.global[callbackFn] = function(start, data, responseCode, errorMsg){ try { if(responseCode != 200){ if(request.onError){ request.onError.call(scope, new Error("Response from Google was: " + responseCode), request); } dojo.global[callbackFn] = function(){};//an error occurred, do not return anything else. return; } if(start == lastCallback + 1){ myHandler(Number(start), data); lastCallback += pageSize; //make sure that the callbacks happen in the correct sequence if(callbacks.length > 0){ callbacks.sort(sortFn); //In case the requsts do not come back in order, sort the returned results. while(callbacks.length > 0 && callbacks[0].start == lastCallback + 1){ myHandler(Number(callbacks[0].start), callbacks[0].data); callbacks.splice(0,1); lastCallback += pageSize; } } }else{ callbacks.push({start:start, data: data}); } } catch (e) { request.onError.call(scope, e, request); } }; // Perform the first request. When this has finished // we will have a list of pages, which can then be // gone through doRequest(firstRequest);";s:7:"summary";s:47:"Fetch Google search items that match to a query";s:7:"returns";s:47:"an error occurred, do not return anything else.";s:6:"chains";a:1:{s:4:"call";a:4:{i:0;s:15:"request.onError";i:1;s:15:"request.onBegin";i:2;s:14:"request.onItem";i:3;s:18:"request.onComplete";}}}s:41:"dojox.data.GoogleSearchStore._processItem";a:6:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:4:"type";s:8:"Function";s:10:"parameters";a:2:{s:4:"item";a:1:{s:4:"type";s:0:"";}s:4:"data";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:30:" item[this._storeRef] = this;";s:7:"private";b:1;s:7:"summary";s:0:"";}s:38:"dojox.data.GoogleSearchStore._getItems";a:6:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:4:"data";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:33:" return data['results'] || data;";s:7:"private";b:1;s:7:"summary";s:0:"";}s:43:"dojox.data.GoogleSearchStore._createContent";a:6:{s:9:"prototype";s:28:"dojox.data.GoogleSearchStore";s:4:"type";s:8:"Function";s:10:"parameters";a:3:{s:5:"query";a:1:{s:4:"type";s:0:"";}s:8:"callback";a:1:{s:4:"type";s:0:"";}s:7:"request";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:122:" return { q: query, v:"1.0", rsz:"large", callback: callback, key:this._key, hl: this._lang };";s:7:"private";b:1;s:7:"summary";s:0:"";}s:33:"dojox.data.GoogleSearchStore._key";a:3:{s:8:"instance";s:28:"dojox.data.GoogleSearchStore";s:7:"private";b:1;s:7:"summary";s:0:"";}s:34:"dojox.data.GoogleSearchStore._lang";a:3:{s:8:"instance";s:28:"dojox.data.GoogleSearchStore";s:7:"private";b:1;s:7:"summary";s:0:"";}s:31:"dojox.data.GoogleWebSearchStore";a:4:{s:4:"type";s:8:"Function";s:6:"chains";a:2:{s:9:"prototype";a:1:{i:0;s:28:"dojox.data.GoogleSearchStore";}s:4:"call";a:1:{i:0;s:28:"dojox.data.GoogleSearchStore";}}s:7:"summary";s:705:"A data store for retrieving search results from Google. The following attributes are supported on each item: <ul> <li>title - The page title in HTML format.</li> <li>titleNoFormatting - The page title in plain text</li> <li>content - A snippet of information about the page</li> <li>url - The URL for the item</li> <li>unescapedUrl - The URL for the item, with URL escaping. This is often more readable</li> <li>visibleUrl - The URL with no protocol specified.</li> <li>cacheUrl - The URL to the copy of the document cached by Google</li> </ul> The query accepts one parameter: text - The string to search for";s:9:"classlike";b:1;}s:32:"dojox.data.GoogleBlogSearchStore";a:4:{s:4:"type";s:8:"Function";s:6:"chains";a:2:{s:9:"prototype";a:1:{i:0;s:28:"dojox.data.GoogleSearchStore";}s:4:"call";a:1:{i:0;s:28:"dojox.data.GoogleSearchStore";}}s:7:"summary";s:797:"A data store for retrieving search results from Google. The following attributes are supported on each item: <ul> <li>title - The blog post title in HTML format.</li> <li>titleNoFormatting - The blog post title in plain text</li> <li>content - A snippet of information about the blog post</li> <li>blogUrl - The URL for the blog</li> <li>postUrl - The URL for the a single blog post</li> <li>visibleUrl - The URL with no protocol specified. <li>cacheUrl - The URL to the copy of the document cached by Google <li>author - The author of the blog post</li> <li>publishedDate - The published date, in RFC-822 format</li> </ul> The query accepts one parameter: text - The string to search for";s:9:"classlike";b:1;}s:38:"dojox.data.GoogleBlogSearchStore._type";a:3:{s:9:"prototype";s:32:"dojox.data.GoogleBlogSearchStore";s:7:"private";b:1;s:7:"summary";s:0:"";}s:44:"dojox.data.GoogleBlogSearchStore._attributes";a:3:{s:9:"prototype";s:32:"dojox.data.GoogleBlogSearchStore";s:7:"private";b:1;s:7:"summary";s:0:"";}s:33:"dojox.data.GoogleLocalSearchStore";a:4:{s:4:"type";s:8:"Function";s:6:"chains";a:2:{s:9:"prototype";a:1:{i:0;s:28:"dojox.data.GoogleSearchStore";}s:4:"call";a:1:{i:0;s:28:"dojox.data.GoogleSearchStore";}}s:7:"summary";s:1180:"A data store for retrieving search results from Google. The following attributes are supported on each item: <ul> <li>title - The blog post title in HTML format.</li> <li>titleNoFormatting - The blog post title in plain text</li> <li>content - A snippet of information about the blog post</li> <li>url - The URL for the item</li> <li>lat - The latitude.</li> <li>lng - The longtitude.</li> <li>streetAddress - The street address</li> <li>city - The city</li> <li>region - The region</li> <li>country - The country</li> <li>phoneNumbers - Phone numbers associated with this address. Can be one or more.</li> <li>ddUrl - A URL that can be used to provide driving directions from the center of the search results to this search results</li> <li>ddUrlToHere - A URL that can be used to provide driving directions from this search result to a user specified location</li> <li>staticMapUrl - The published date, in RFC-822 format</li> </ul> The query accepts one parameter: text - The string to search for";s:9:"classlike";b:1;}s:39:"dojox.data.GoogleLocalSearchStore._type";a:3:{s:9:"prototype";s:33:"dojox.data.GoogleLocalSearchStore";s:7:"private";b:1;s:7:"summary";s:0:"";}s:45:"dojox.data.GoogleLocalSearchStore._attributes";a:3:{s:9:"prototype";s:33:"dojox.data.GoogleLocalSearchStore";s:7:"private";b:1;s:7:"summary";s:0:"";}s:33:"dojox.data.GoogleVideoSearchStore";a:4:{s:4:"type";s:8:"Function";s:6:"chains";a:2:{s:9:"prototype";a:1:{i:0;s:28:"dojox.data.GoogleSearchStore";}s:4:"call";a:1:{i:0;s:28:"dojox.data.GoogleSearchStore";}}s:7:"summary";s:1290:"A data store for retrieving search results from Google. The following attributes are supported on each item: <ul> <li>title - The blog post title in HTML format.</li> <li>titleNoFormatting - The blog post title in plain text</li> <li>content - A snippet of information about the blog post</li> <li>url - The URL for the item</li> <li>published - The published date, in RFC-822 format.</li> <li>publisher - The name of the publisher.</li> <li>duration - The approximate duration, in seconds, of the video.</li> <li>tbWidth - The width in pixels of the video.</li> <li>tbHeight - The height in pixels of the video</li> <li>tbUrl - The URL to a thumbnail representation of the video.</li> <li>playUrl - If present, supplies the url of the flash version of the video that can be played inline on your page. To play this video simply create and <embed> element on your page using this value as the src attribute and using application/x-shockwave-flash as the type attribute. If you want the video to play right away, make sure to append &autoPlay=true to the url..</li> </ul> The query accepts one parameter: text - The string to search for";s:9:"classlike";b:1;}s:39:"dojox.data.GoogleVideoSearchStore._type";a:3:{s:9:"prototype";s:33:"dojox.data.GoogleVideoSearchStore";s:7:"private";b:1;s:7:"summary";s:0:"";}s:45:"dojox.data.GoogleVideoSearchStore._attributes";a:3:{s:9:"prototype";s:33:"dojox.data.GoogleVideoSearchStore";s:7:"private";b:1;s:7:"summary";s:0:"";}s:32:"dojox.data.GoogleNewsSearchStore";a:4:{s:4:"type";s:8:"Function";s:6:"chains";a:2:{s:9:"prototype";a:1:{i:0;s:28:"dojox.data.GoogleSearchStore";}s:4:"call";a:1:{i:0;s:28:"dojox.data.GoogleSearchStore";}}s:7:"summary";s:1169:"A data store for retrieving search results from Google. The following attributes are supported on each item: <ul> <li>title - The news story title in HTML format.</li> <li>titleNoFormatting - The news story title in plain text</li> <li>content - A snippet of information about the news story</li> <li>url - The URL for the item</li> <li>unescapedUrl - The URL for the item, with URL escaping. This is often more readable</li> <li>publisher - The name of the publisher</li> <li>clusterUrl - A URL pointing to a page listing related storied.</li> <li>location - The location of the news story.</li> <li>publishedDate - The date of publication, in RFC-822 format.</li> <li>relatedStories - An optional array of objects specifying related stories. Each object has the following subset of properties: "title", "titleNoFormatting", "url", "unescapedUrl", "publisher", "location", "publishedDate". </li> </ul> The query accepts one parameter: text - The string to search for";s:9:"classlike";b:1;}s:38:"dojox.data.GoogleNewsSearchStore._type";a:3:{s:9:"prototype";s:32:"dojox.data.GoogleNewsSearchStore";s:7:"private";b:1;s:7:"summary";s:0:"";}s:44:"dojox.data.GoogleNewsSearchStore._attributes";a:3:{s:9:"prototype";s:32:"dojox.data.GoogleNewsSearchStore";s:7:"private";b:1;s:7:"summary";s:0:"";}s:32:"dojox.data.GoogleBookSearchStore";a:4:{s:4:"type";s:8:"Function";s:6:"chains";a:2:{s:9:"prototype";a:1:{i:0;s:28:"dojox.data.GoogleSearchStore";}s:4:"call";a:1:{i:0;s:28:"dojox.data.GoogleSearchStore";}}s:7:"summary";s:733:"A data store for retrieving search results from Google. The following attributes are supported on each item: <ul> <li>title - The book title in HTML format.</li> <li>titleNoFormatting - The book title in plain text</li> <li>authors - An array of authors</li> <li>url - The URL for the item</li> <li>unescapedUrl - The URL for the item, with URL escaping. This is often more readable</li> <li>bookId - An identifier for the book, usually an ISBN.</li> <li>pageCount - The number of pages in the book.</li> <li>publishedYear - The year of publication.</li> </ul> The query accepts one parameter: text - The string to search for";s:9:"classlike";b:1;}s:38:"dojox.data.GoogleBookSearchStore._type";a:3:{s:9:"prototype";s:32:"dojox.data.GoogleBookSearchStore";s:7:"private";b:1;s:7:"summary";s:0:"";}s:44:"dojox.data.GoogleBookSearchStore._attributes";a:3:{s:9:"prototype";s:32:"dojox.data.GoogleBookSearchStore";s:7:"private";b:1;s:7:"summary";s:0:"";}s:33:"dojox.data.GoogleImageSearchStore";a:4:{s:4:"type";s:8:"Function";s:6:"chains";a:2:{s:9:"prototype";a:1:{i:0;s:28:"dojox.data.GoogleSearchStore";}s:4:"call";a:1:{i:0;s:28:"dojox.data.GoogleSearchStore";}}s:7:"summary";s:1220:"A data store for retrieving search results from Google. The following attributes are supported on each item: <ul> <li>title - The image title in HTML format.</li> <li>titleNoFormatting - The image title in plain text</li> <li>url - The URL for the image</li> <li>unescapedUrl - The URL for the image, with URL escaping. This is often more readable</li> <li>tbUrl - The URL for the image thumbnail</li> <li>visibleUrl - A shortened version of the URL associated with the result, stripped of a protocol and path</li> <li>originalContextUrl - The URL of the page containing the image.</li> <li>width - The width of the image in pixels.</li> <li>height - The height of the image in pixels.</li> <li>tbWidth - The width of the image thumbnail in pixels.</li> <li>tbHeight - The height of the image thumbnail in pixels.</li> <li>content - A snippet of information about the image, in HTML format</li> <li>contentNoFormatting - A snippet of information about the image, in plain text</li> </ul> The query accepts one parameter: text - The string to search for";s:9:"classlike";b:1;}s:39:"dojox.data.GoogleImageSearchStore._type";a:3:{s:9:"prototype";s:33:"dojox.data.GoogleImageSearchStore";s:7:"private";b:1;s:7:"summary";s:0:"";}s:45:"dojox.data.GoogleImageSearchStore._attributes";a:3:{s:9:"prototype";s:33:"dojox.data.GoogleImageSearchStore";s:7:"private";b:1;s:7:"summary";s:0:"";}s:10:"dojox.data";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:0:"";}s:5:"dojox";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:0:"";}}