//>>built define("dojox/data/GoogleSearchStore",["dojo/_base/kernel","dojo/_base/lang","dojo/_base/declare","dojo/_base/window","dojo/_base/query","dojo/dom-construct","dojo/io/script"],function(_1,_2,_3,_4,_5,_6,_7){ _1.experimental("dojox.data.GoogleSearchStore"); var _8=_3("dojox.data.GoogleSearchStore",null,{constructor:function(_9){ if(_9){ if(_9.label){ this.label=_9.label; } if(_9.key){ this._key=_9.key; } if(_9.lang){ this._lang=_9.lang; } if("urlPreventCache" in _9){ this.urlPreventCache=_9.urlPreventCache?true:false; } } this._id=dojox.data.GoogleSearchStore.prototype._id++; },_id:0,_requestCount:0,_googleUrl:"http://ajax.googleapis.com/ajax/services/search/",_storeRef:"_S",_attributes:["unescapedUrl","url","visibleUrl","cacheUrl","title","titleNoFormatting","content","estimatedResultCount"],_aggregatedAttributes:{estimatedResultCount:"cursor.estimatedResultCount"},label:"titleNoFormatting",_type:"web",urlPreventCache:true,_queryAttrs:{text:"q"},_assertIsItem:function(_a){ if(!this.isItem(_a)){ throw new Error("dojox.data.GoogleSearchStore: a function was passed an item argument that was not an item"); } },_assertIsAttribute:function(_b){ if(typeof _b!=="string"){ throw new Error("dojox.data.GoogleSearchStore: a function was passed an attribute argument that was not an attribute name string"); } },getFeatures:function(){ return {"dojo.data.api.Read":true}; },getValue:function(_c,_d,_e){ var _f=this.getValues(_c,_d); if(_f&&_f.length>0){ return _f[0]; } return _e; },getAttributes:function(_10){ return this._attributes; },hasAttribute:function(_11,_12){ if(this.getValue(_11,_12)){ return true; } return false; },isItemLoaded:function(_13){ return this.isItem(_13); },loadItem:function(_14){ },getLabel:function(_15){ return this.getValue(_15,this.label); },getLabelAttributes:function(_16){ return [this.label]; },containsValue:function(_17,_18,_19){ var _1a=this.getValues(_17,_18); for(var i=0;i<_1a.length;i++){ if(_1a[i]===_19){ return true; } } return false; },getValues:function(_1b,_1c){ this._assertIsItem(_1b); this._assertIsAttribute(_1c); var val=_1b[_1c]; if(_2.isArray(val)){ return val; }else{ if(val!==undefined){ return [val]; }else{ return []; } } },isItem:function(_1d){ if(_1d&&_1d[this._storeRef]===this){ return true; } return false; },close:function(_1e){ },_format:function(_1f,_20){ return _1f; },fetch:function(_21){ _21=_21||{}; var _22=_21.scope||_4.global; if(!_21.query){ if(_21.onError){ _21.onError.call(_22,new Error(this.declaredClass+": A query must be specified.")); return; } } var _23={}; for(var _24 in this._queryAttrs){ _23[_24]=_21.query[_24]; } _21={query:_23,onComplete:_21.onComplete,onError:_21.onError,onItem:_21.onItem,onBegin:_21.onBegin,start:_21.start,count:_21.count}; var _25=8; var _26="GoogleSearchStoreCallback_"+this._id+"_"+(++this._requestCount); var _27=this._createContent(_23,_26,_21); var _28; if(typeof (_21.start)==="undefined"||_21.start===null){ _21.start=0; } if(!_21.count){ _21.count=_25; } _28={start:_21.start-_21.start%_25}; var _29=this; var _2a=this._googleUrl+this._type; var _2b={url:_2a,preventCache:this.urlPreventCache,content:_27}; var _2c=[]; var _2d=0; var _2e=false; var _2f=_21.start-1; var _30=0; var _31=[]; function _32(req){ _30++; _2b.content.context=_2b.content.start=req.start; var _33=_7.get(_2b); _31.push(_33.ioArgs.id); _33.addErrback(function(_34){ if(_21.onError){ _21.onError.call(_22,_34,_21); } }); }; var _35=function(_36,_37){ if(_31.length>0){ _5("#"+_31.splice(0,1)).forEach(_6.destroy); } if(_2e){ return; } var _38=_29._getItems(_37); var _39=_37?_37["cursor"]:null; if(_38){ for(var i=0;i<_38.length&&i+_36<_21.count+_21.start;i++){ _29._processItem(_38[i],_37); _2c[i+_36]=_38[i]; } _2d++; if(_2d==1){ var _3a=_39?_39.pages:null; var _3b=_3a?Number(_3a[_3a.length-1].start):0; if(_21.onBegin){ var est=_39?_39.estimatedResultCount:_38.length; var _3c=est?Math.min(est,_3b+_38.length):_3b+_38.length; _21.onBegin.call(_22,_3c,_21); } var _3d=(_21.start-_21.start%_25)+_25; var _3e=1; while(_3a){ if(!_3a[_3e]||Number(_3a[_3e].start)>=_21.start+_21.count){ break; } if(Number(_3a[_3e].start)>=_3d){ _32({start:_3a[_3e].start}); } _3e++; } } if(_21.onItem&&_2c[_2f+1]){ do{ _2f++; _21.onItem.call(_22,_2c[_2f],_21); }while(_2c[_2f+1]&&_2f<_21.start+_21.count); } if(_2d==_30){ _2e=true; _4.global[_26]=null; if(_21.onItem){ _21.onComplete.call(_22,null,_21); }else{ _2c=_2c.slice(_21.start,_21.start+_21.count); _21.onComplete.call(_22,_2c,_21); } } } }; var _3f=[]; var _40=_28.start-1; _4.global[_26]=function(_41,_42,_43,_44){ try{ if(_43!=200){ if(_21.onError){ _21.onError.call(_22,new Error("Response from Google was: "+_43),_21); } _4.global[_26]=function(){ }; return; } if(_41==_40+1){ _35(Number(_41),_42); _40+=_25; if(_3f.length>0){ _3f.sort(_29._getSort()); while(_3f.length>0&&_3f[0].start==_40+1){ _35(Number(_3f[0].start),_3f[0].data); _3f.splice(0,1); _40+=_25; } } }else{ _3f.push({start:_41,data:_42}); } } catch(e){ _21.onError.call(_22,e,_21); } }; _32(_28); },_getSort:function(){ return function(a,b){ if(a.start