
var gadgets=gadgets||{};gadgets.config=function(){var components=[];return{register:function(component,opt_validators,opt_callback){var registered=components[component];if(!registered){registered=[];components[component]=registered;}
registered.push({validators:opt_validators||{},callback:opt_callback});},get:function(opt_component){if(opt_component){return configuration[opt_component]||{};}
return configuration;},init:function(config,opt_noValidation){configuration=config;for(var name in components){if(components.hasOwnProperty(name)){var componentList=components[name],conf=config[name];for(var i=0,j=componentList.length;i<j;++i){var component=componentList[i];if(conf&&!opt_noValidation){var validators=component.validators;for(var v in validators){if(validators.hasOwnProperty(v)){if(!validators[v](conf[v])){throw new Error('Invalid config value "'+conf[v]+'" for parameter "'+v+'" in component "'+
name+'"');}}}}
if(component.callback){component.callback(config);}}}}},EnumValidator:function(list){var listItems=[];if(arguments.length>1){for(var i=0,arg;(arg=arguments[i]);++i){listItems.push(arg);}}else{listItems=list;}
return function(data){for(var i=0,test;(test=listItems[i]);++i){if(data===listItems[i]){return true;}}};},RegExValidator:function(re){return function(data){return re.test(data);};},ExistsValidator:function(data){return typeof data!=="undefined";},NonEmptyStringValidator:function(data){return typeof data==="string"&&data.length>0;},BooleanValidator:function(data){return typeof data==="boolean";},LikeValidator:function(test){return function(data){for(var member in test){if(test.hasOwnProperty(member)){var t=test[member];if(!t(data[member])){return false;}}}
return true;};}};}();
var gadgets=gadgets||{};gadgets.log=function(message){gadgets.log.logAtLevel(gadgets.log.INFO,message);};gadgets.warn=function(message){gadgets.log.logAtLevel(gadgets.log.WARNING,message);};gadgets.error=function(message){gadgets.log.logAtLevel(gadgets.log.ERROR,message);};gadgets.setLogLevel=function(logLevel){gadgets.log.logLevelThreshold_=logLevel;};gadgets.log.logAtLevel=function(level,message){if(level<gadgets.log.logLevelThreshold_||!gadgets.log._console){return;}
var logger;var gadgetconsole=gadgets.log._console;if(level==gadgets.log.WARNING&&gadgetconsole.warn){gadgetconsole.warn(message)}else if(level==gadgets.log.ERROR&&gadgetconsole.error){gadgetconsole.error(message);}else if(gadgetconsole.log){gadgetconsole.log(message);}};gadgets.log.INFO=1;gadgets.log.WARNING=2;gadgets.log.NONE=4;gadgets.log.logLevelThreshold_=gadgets.log.INFO;gadgets.log._console=window.console?window.console:window.opera?window.opera.postError:undefined;var tamings___=tamings___||[];tamings___.push(function(imports){___.grantRead(gadgets.log,'INFO');___.grantRead(gadgets.log,'WARNING');___.grantRead(gadgets.log,'ERROR');___.grantRead(gadgets.log,'NONE');caja___.whitelistFuncs([[gadgets,'log'],[gadgets,'warn'],[gadgets,'error'],[gadgets,'setLogLevel'],[gadgets.log,'logAtLevel']]);});
var gadgets=gadgets||{};if(window.JSON&&window.JSON.parse&&window.JSON.stringify){gadgets.json={parse:function(str){try{return window.JSON.parse(str);}catch(e){return false;}},stringify:function(obj){try{return window.JSON.stringify(obj);}catch(e){return null;}}};}else{gadgets.json=function(){function f(n){return n<10?'0'+n:n;}
Date.prototype.toJSON=function(){return[this.getUTCFullYear(),'-',f(this.getUTCMonth()+1),'-',f(this.getUTCDate()),'T',f(this.getUTCHours()),':',f(this.getUTCMinutes()),':',f(this.getUTCSeconds()),'Z'].join("");};var m={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};function stringify(value){var a,i,k,l,r=/["\\\x00-\x1f\x7f-\x9f]/g,v;switch(typeof value){case'string':return r.test(value)?'"'+value.replace(r,function(a){var c=m[a];if(c){return c;}
c=a.charCodeAt();return'\\u00'+Math.floor(c/16).toString(16)+
(c%16).toString(16);})+'"':'"'+value+'"';case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}
a=[];if(typeof value.length==='number'&&!value.propertyIsEnumerable('length')){l=value.length;for(i=0;i<l;i+=1){a.push(stringify(value[i])||'null');}
return'['+a.join(',')+']';}
for(k in value){if(k.match('___$'))
continue;if(value.hasOwnProperty(k)){if(typeof k==='string'){v=stringify(value[k]);if(v){a.push(stringify(k)+':'+v);}}}}
return'{'+a.join(',')+'}';}}
return{stringify:stringify,parse:function(text){if(/^[\],:{}\s]*$/.test(text.replace(/\\["\\\/b-u]/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){return eval('('+text+')');}
return false;}};}();}
var tamings___=tamings___||[];tamings___.push(function(imports){caja___.whitelistFuncs([[gadgets.json,'parse'],[gadgets.json,'stringify']]);});
var gadgets=gadgets||{};gadgets.util=function(){function parseUrlParams(url){var query;var l=url;var queryIdx=l.indexOf("?");var hashIdx=l.indexOf("#");if(hashIdx===-1){query=l.substr(queryIdx+1);}else{query=[l.substr(queryIdx+1,hashIdx-queryIdx-1),"&",l.substr(hashIdx+1)].join("");}
return query.split("&");}
var parameters=null;var features={};var services={};var onLoadHandlers=[];var escapeCodePoints={0:false,10:true,13:true,34:true,39:true,60:true,62:true,92:true,8232:true,8233:true};function unescapeEntity(match,value){return String.fromCharCode(value);}
function init(config){features=config["core.util"]||{};}
if(gadgets.config){gadgets.config.register("core.util",null,init);}
return{getUrlParameters:function(opt_url){if(parameters!==null&&typeof opt_url==="undefined"){return parameters;}
var parsed={};parameters={};var pairs=parseUrlParams(opt_url||document.location.href);var unesc=window.decodeURIComponent?decodeURIComponent:unescape;for(var i=0,j=pairs.length;i<j;++i){var pos=pairs[i].indexOf('=');if(pos===-1){continue;}
var argName=pairs[i].substring(0,pos);var value=pairs[i].substring(pos+1);value=value.replace(/\+/g," ");parsed[argName]=unesc(value);}
if(typeof opt_url==="undefined"){parameters=parsed;}
return parsed;},makeClosure:function(scope,callback,var_args){var baseArgs=[];for(var i=2,j=arguments.length;i<j;++i){baseArgs.push(arguments[i]);}
return function(){var tmpArgs=baseArgs.slice();for(var i=0,j=arguments.length;i<j;++i){tmpArgs.push(arguments[i]);}
return callback.apply(scope,tmpArgs);};},makeEnum:function(values){var obj={};for(var i=0,v;(v=values[i]);++i){obj[v]=v;}
return obj;},getFeatureParameters:function(feature){return typeof features[feature]==="undefined"?null:features[feature];},hasFeature:function(feature){return typeof features[feature]!=="undefined";},getServices:function(){return services;},registerOnLoadHandler:function(callback){onLoadHandlers.push(callback);},runOnLoadHandlers:function(){for(var i=0,j=onLoadHandlers.length;i<j;++i){onLoadHandlers[i]();}},escape:function(input,opt_escapeObjects){if(!input){return input;}else if(typeof input==="string"){return gadgets.util.escapeString(input);}else if(typeof input==="array"){for(var i=0,j=input.length;i<j;++i){input[i]=gadgets.util.escape(input[i]);}}else if(typeof input==="object"&&opt_escapeObjects){var newObject={};for(var field in input){if(input.hasOwnProperty(field)){newObject[gadgets.util.escapeString(field)]=gadgets.util.escape(input[field],true);}}
return newObject;}
return input;},escapeString:function(str){if(!str)return str;var out=[],ch,shouldEscape;for(var i=0,j=str.length;i<j;++i){ch=str.charCodeAt(i);shouldEscape=escapeCodePoints[ch];if(shouldEscape===true){out.push("&#",ch,";");}else if(shouldEscape!==false){out.push(str.charAt(i));}}
return out.join("");},unescapeString:function(str){if(!str)return str;return str.replace(/&#([0-9]+);/g,unescapeEntity);}};}();gadgets.util.getUrlParameters();var tamings___=tamings___||[];tamings___.push(function(imports){caja___.whitelistFuncs([[gadgets.util,'escapeString'],[gadgets.util,'getFeatureParameters'],[gadgets.util,'hasFeature'],[gadgets.util,'registerOnLoadHandler'],[gadgets.util,'unescapeString']]);});
var shindig=shindig||{};shindig.Auth=function(){var authToken=null;var trusted=null;function addParamsToToken(urlParams){var args=authToken.split('&');for(var i=0;i<args.length;i++){var nameAndValue=args[i].split('=');if(nameAndValue.length===2){var name=nameAndValue[0];var value=nameAndValue[1];if(value==='$'){value=encodeURIComponent(urlParams[name]);args[i]=name+'='+value;}}}
authToken=args.join('&');}
function init(configuration){var urlParams=gadgets.util.getUrlParameters();var config=configuration["shindig.auth"]||{};if(config.authToken){authToken=config.authToken;}else if(urlParams.st){authToken=urlParams.st;}
if(authToken!==null){addParamsToToken(urlParams);}
if(config.trustedJson){trusted=eval("("+config.trustedJson+")");}}
gadgets.config.register("shindig.auth",null,init);return{getSecurityToken:function(){return authToken;},updateSecurityToken:function(newToken){authToken=newToken;},getTrustedData:function(){return trusted;}};};var shindig=shindig||{};shindig.auth=new shindig.Auth();
var gadgets=gadgets||{};gadgets.io=function(){var config={};var oauthState;function makeXhr(){var x;if(window.ActiveXObject){x=new ActiveXObject("Msxml2.XMLHTTP");if(!x){x=new ActiveXObject("Microsoft.XMLHTTP");}
return x;}
else if(window.XMLHttpRequest){return new window.XMLHttpRequest();}}
function hadError(xobj,callback){if(xobj.readyState!==4){return true;}
try{if(xobj.status!==200){var error=(""+xobj.status);if(xobj.responseText){error=error+" "+xobj.responseText;}
callback({errors:[error],rc:xobj.status,text:xobj.responseText});return true;}}catch(e){callback({errors:[e.number+" Error not specified"],rc:e.number,text:e.description});return true;}
return false;}
function processNonProxiedResponse(url,callback,params,xobj){if(hadError(xobj,callback)){return;}
var data={body:xobj.responseText};callback(transformResponseData(params,data));}
var UNPARSEABLE_CRUFT="throw 1; < don't be evil' >";function processResponse(url,callback,params,xobj){if(hadError(xobj,callback)){return;}
var txt=xobj.responseText;txt=txt.substr(UNPARSEABLE_CRUFT.length);var data=eval("("+txt+")");data=data[url];if(data.oauthState){oauthState=data.oauthState;}
if(data.st){shindig.auth.updateSecurityToken(data.st);}
callback(transformResponseData(params,data));}
function transformResponseData(params,data){var resp={text:data.body,rc:data.rc||200,headers:data.headers,oauthApprovalUrl:data.oauthApprovalUrl,oauthError:data.oauthError,oauthErrorText:data.oauthErrorText,errors:[]};if(resp.rc<200||resp.rc>=400){resp.errors=[resp.rc+" Error"]}else if(resp.text){if(resp.rc>=300&&resp.rc<400){params.CONTENT_TYPE="TEXT";}
switch(params.CONTENT_TYPE){case"JSON":case"FEED":resp.data=gadgets.json.parse(resp.text);if(!resp.data){resp.errors.push("500 Failed to parse JSON");resp.rc=500;resp.data=null;}
break;case"DOM":var dom;if(window.ActiveXObject){dom=new ActiveXObject("Microsoft.XMLDOM");dom.async=false;dom.validateOnParse=false;dom.resolveExternals=false;if(!dom.loadXML(resp.text)){resp.errors.push("500 Failed to parse XML");resp.rc=500;}else{resp.data=dom;}}else{var parser=new DOMParser();dom=parser.parseFromString(resp.text,"text/xml");if("parsererror"===dom.documentElement.nodeName){resp.errors.push("500 Failed to parse XML");resp.rc=500;}else{resp.data=dom;}}
break;default:resp.data=resp.text;break;}}
return resp;}
function makeXhrRequest(realUrl,proxyUrl,callback,paramData,method,params,processResponseFunction,opt_contentType){var xhr=makeXhr();if(proxyUrl.indexOf('//')==0){proxyUrl=document.location.protocol+proxyUrl;}
xhr.open(method,proxyUrl,true);if(callback){xhr.onreadystatechange=gadgets.util.makeClosure(null,processResponseFunction,realUrl,callback,params,xhr);}
if(paramData!==null){xhr.setRequestHeader('Content-Type',opt_contentType||'application/x-www-form-urlencoded');xhr.send(paramData);}else{xhr.send(null);}}
function respondWithPreload(postData,params,callback){if(gadgets.io.preloaded_&&postData.httpMethod==="GET"){for(var i=0;i<gadgets.io.preloaded_.length;i++){var preload=gadgets.io.preloaded_[i];if(preload&&(preload.id===postData.url)){delete gadgets.io.preloaded_[i];if(preload.rc!==200){callback({rc:preload.rc,errors:[preload.rc+" Error"]});}else{if(preload.oauthState){oauthState=preload.oauthState;}
var resp={body:preload.body,rc:preload.rc,headers:preload.headers,oauthApprovalUrl:preload.oauthApprovalUrl,oauthError:preload.oauthError,oauthErrorText:preload.oauthErrorText,errors:[]};callback(transformResponseData(params,resp));}
return true;}}}
return false;}
function init(configuration){config=configuration["core.io"]||{};}
var requiredConfig={proxyUrl:new gadgets.config.RegExValidator(/.*%(raw)?url%.*/),jsonProxyUrl:gadgets.config.NonEmptyStringValidator};gadgets.config.register("core.io",requiredConfig,init);return{makeRequest:function(url,callback,opt_params){var params=opt_params||{};var httpMethod=params.METHOD||"GET";var refreshInterval=params.REFRESH_INTERVAL;var auth,st;if(params.AUTHORIZATION&&params.AUTHORIZATION!=="NONE"){auth=params.AUTHORIZATION.toLowerCase();st=shindig.auth.getSecurityToken();}else{if(httpMethod==="GET"&&refreshInterval===undefined){refreshInterval=3600;}}
var signOwner=true;if(typeof params.OWNER_SIGNED!=="undefined"){signOwner=params.OWNER_SIGNED;}
var signViewer=true;if(typeof params.VIEWER_SIGNED!=="undefined"){signViewer=params.VIEWER_SIGNED;}
var headers=params.HEADERS||{};if(httpMethod==="POST"&&!headers["Content-Type"]){headers["Content-Type"]="application/x-www-form-urlencoded";}
var urlParams=gadgets.util.getUrlParameters();var paramData={url:url,httpMethod:httpMethod,headers:gadgets.io.encodeValues(headers,false),postData:params.POST_DATA||"",authz:auth||"",st:st||"",contentType:params.CONTENT_TYPE||"TEXT",numEntries:params.NUM_ENTRIES||"3",getSummaries:!!params.GET_SUMMARIES,signOwner:signOwner,signViewer:signViewer,gadget:urlParams.url,container:urlParams.container||urlParams.synd||"default",bypassSpecCache:gadgets.util.getUrlParameters().nocache||""};if(auth==="oauth"||auth==="signed"){if(gadgets.io.oauthReceivedCallbackUrl_){paramData.OAUTH_RECEIVED_CALLBACK=gadgets.io.oauthReceivedCallbackUrl_;gadgets.io.oauthReceivedCallbackUrl_=null;}
paramData.oauthState=oauthState||"";for(var opt in params){if(params.hasOwnProperty(opt)){if(opt.indexOf("OAUTH_")===0){paramData[opt]=params[opt];}}}}
var proxyUrl=config.jsonProxyUrl.replace("%host%",document.location.host);if(!respondWithPreload(paramData,params,callback,processResponse)){if(httpMethod==="GET"&&refreshInterval>0){var extraparams="?refresh="+refreshInterval+'&'
+gadgets.io.encodeValues(paramData);makeXhrRequest(url,proxyUrl+extraparams,callback,null,"GET",params,processResponse);}else{makeXhrRequest(url,proxyUrl,callback,gadgets.io.encodeValues(paramData),"POST",params,processResponse);}}},makeNonProxiedRequest:function(relativeUrl,callback,opt_params,opt_contentType){var params=opt_params||{};makeXhrRequest(relativeUrl,relativeUrl,callback,params.POST_DATA,params.METHOD,params,processNonProxiedResponse,opt_contentType);},clearOAuthState:function(){oauthState=undefined;},encodeValues:function(fields,opt_noEscaping){var escape=!opt_noEscaping;var buf=[];var first=false;for(var i in fields){if(fields.hasOwnProperty(i)){if(!first){first=true;}else{buf.push("&");}
buf.push(escape?encodeURIComponent(i):i);buf.push("=");buf.push(escape?encodeURIComponent(fields[i]):fields[i]);}}
return buf.join("");},getProxyUrl:function(url,opt_params){var params=opt_params||{};var refresh=params.REFRESH_INTERVAL;if(refresh===undefined){refresh="3600";}
var urlParams=gadgets.util.getUrlParameters();var rewriteMimeParam=params.rewriteMime?"&rewriteMime="+encodeURIComponent(params.rewriteMime):"";return config.proxyUrl.replace("%url%",encodeURIComponent(url)).replace("%host%",document.location.host).replace("%rawurl%",url).replace("%refresh%",encodeURIComponent(refresh)).replace("%gadget%",encodeURIComponent(urlParams.url)).replace("%container%",encodeURIComponent(urlParams.container||urlParams.synd)).replace("%rewriteMime%",rewriteMimeParam);}};}();gadgets.io.RequestParameters=gadgets.util.makeEnum(["METHOD","CONTENT_TYPE","POST_DATA","HEADERS","AUTHORIZATION","NUM_ENTRIES","GET_SUMMARIES","REFRESH_INTERVAL","OAUTH_SERVICE_NAME","OAUTH_USE_TOKEN","OAUTH_TOKEN_NAME","OAUTH_REQUEST_TOKEN","OAUTH_REQUEST_TOKEN_SECRET","OAUTH_RECEIVED_CALLBACK"]);gadgets.io.MethodType=gadgets.util.makeEnum(["GET","POST","PUT","DELETE","HEAD"]);gadgets.io.ContentType=gadgets.util.makeEnum(["TEXT","DOM","JSON","FEED"]);gadgets.io.AuthorizationType=gadgets.util.makeEnum(["NONE","SIGNED","OAUTH"]);var tamings___=tamings___||[];tamings___.push(function(imports){caja___.whitelistFuncs([[gadgets.io,'encodeValues'],[gadgets.io,'getProxyUrl'],[gadgets.io,'makeRequest']]);});
var gadgets=gadgets||{};(function(){var instance=null;var prefs={};var esc=gadgets.util.escapeString;var messages={};var defaultPrefs={};var language="en";var country="US";var moduleId=0;function parseUrl(){var params=gadgets.util.getUrlParameters();for(var i in params){if(params.hasOwnProperty(i)){if(i.indexOf("up_")===0&&i.length>3){prefs[i.substr(3)]=String(params[i]);}else if(i==="country"){country=params[i];}else if(i==="lang"){language=params[i];}else if(i==="mid"){moduleId=params[i];}}}}
function mergeDefaults(){for(var name in defaultPrefs){if(typeof prefs[name]==='undefined'){prefs[name]=defaultPrefs[name];}}}
gadgets.Prefs=function(){if(!instance){parseUrl();mergeDefaults();instance=this;}
return instance;};gadgets.Prefs.setInternal_=function(key,value){var wasModified=false;if(typeof key==="string"){if(!prefs.hasOwnProperty(key)||prefs[key]!==value){wasModified=true;}
prefs[key]=value;}else{for(var k in key){if(key.hasOwnProperty(k)){var v=key[k];if(!prefs.hasOwnProperty(k)||prefs[k]!==v){wasModified=true;}
prefs[k]=v;}}}
return wasModified;};gadgets.Prefs.setMessages_=function(msgs){messages=msgs;};gadgets.Prefs.setDefaultPrefs_=function(defprefs){defaultPrefs=defprefs;};gadgets.Prefs.prototype.getString=function(key){if(key===".lang"){key="lang";}
return prefs[key]?esc(prefs[key]):"";};gadgets.Prefs.prototype.setDontEscape_=function(){esc=function(k){return k;};};gadgets.Prefs.prototype.getInt=function(key){var val=parseInt(prefs[key],10);return isNaN(val)?0:val;};gadgets.Prefs.prototype.getFloat=function(key){var val=parseFloat(prefs[key]);return isNaN(val)?0:val;};gadgets.Prefs.prototype.getBool=function(key){var val=prefs[key];if(val){return val==="true"||val===true||!!parseInt(val,10);}
return false;};gadgets.Prefs.prototype.set=function(key,value){throw new Error("setprefs feature required to make this call.");};gadgets.Prefs.prototype.getArray=function(key){var val=prefs[key];if(val){var arr=val.split("|");for(var i=0,j=arr.length;i<j;++i){arr[i]=esc(arr[i].replace(/%7C/g,"|"));}
return arr;}
return[];};gadgets.Prefs.prototype.setArray=function(key,val){throw new Error("setprefs feature required to make this call.");};gadgets.Prefs.prototype.getMsg=function(key){return messages[key]||"";};gadgets.Prefs.prototype.getCountry=function(){return country;};gadgets.Prefs.prototype.getLang=function(){return language;};gadgets.Prefs.prototype.getModuleId=function(){return moduleId;};})();var tamings___=tamings___||[];tamings___.push(function(imports){caja___.whitelistCtors([[gadgets,'Prefs',Object]]);caja___.whitelistMeths([[gadgets.Prefs,'getArray'],[gadgets.Prefs,'getBool'],[gadgets.Prefs,'getCountry'],[gadgets.Prefs,'getFloat'],[gadgets.Prefs,'getInt'],[gadgets.Prefs,'getLang'],[gadgets.Prefs,'getMsg'],[gadgets.Prefs,'getString'],[gadgets.Prefs,'set'],[gadgets.Prefs,'setArray']]);});
var JSON=window.JSON||gadgets.json;var _IG_Prefs=(function(){var instance=null;var _IG_Prefs=function(){if(!instance){instance=new gadgets.Prefs();instance.setDontEscape_();}
return instance;};_IG_Prefs._parseURL=gadgets.Prefs.parseUrl;return _IG_Prefs;})();function _IG_Fetch_wrapper(callback,obj){callback(obj.data?obj.data:"");}
function _IG_FetchContent(url,callback,opt_params){var params=opt_params||{};if(params.refreshInterval){params['REFRESH_INTERVAL']=params.refreshInterval;}else{params['REFRESH_INTERVAL']=3600;}
for(var param in params){var pvalue=params[param];delete params[param];params[param.toUpperCase()]=pvalue;}
var cb=gadgets.util.makeClosure(null,_IG_Fetch_wrapper,callback);gadgets.io.makeRequest(url,cb,params);}
function _IG_FetchXmlContent(url,callback,opt_params){var params=opt_params||{};if(params.refreshInterval){params['REFRESH_INTERVAL']=params.refreshInterval;}else{params['REFRESH_INTERVAL']=3600;}
params.CONTENT_TYPE="DOM";var cb=gadgets.util.makeClosure(null,_IG_Fetch_wrapper,callback);gadgets.io.makeRequest(url,cb,params);}
function _IG_FetchFeedAsJSON(url,callback,numItems,getDescriptions,opt_params){var params=opt_params||{};params.CONTENT_TYPE="FEED";params.NUM_ENTRIES=numItems;params.GET_SUMMARIES=getDescriptions;gadgets.io.makeRequest(url,function(resp){resp.data=resp.data||{};if(resp.errors&&resp.errors.length>0){resp.data.ErrorMsg=resp.errors[0];}
if(resp.data.link){resp.data.URL=url;}
if(resp.data.title){resp.data.Title=resp.data.title;}
if(resp.data.description){resp.data.Description=resp.data.description;}
if(resp.data.link){resp.data.Link=resp.data.link;}
if(resp.data.items&&resp.data.items.length>0){resp.data.Entry=resp.data.items;for(var index=0;index<resp.data.Entry.length;++index){var entry=resp.data.Entry[index];entry.Title=entry.title;entry.Link=entry.link;entry.Summary=entry.summary||entry.description;entry.Date=entry.pubDate;}}
for(var ix=0;ix<resp.data.Entry.length;++ix){var entry=resp.data.Entry[ix];entry.Date=(entry.Date/1000);}
callback(resp.data);},params);}
function _IG_GetCachedUrl(url,opt_params){var params=opt_params||{};params['REFRESH_INTERVAL']=3600;if(params.refreshInterval){params['REFRESH_INTERVAL']=params.refreshInterval;}
return gadgets.io.getProxyUrl(url,params);}
function _IG_GetImageUrl(url,opt_params){return _IG_GetCachedUrl(url,opt_params);}
function _IG_GetImage(url){var img=document.createElement('img');img.src=_IG_GetCachedUrl(url);return img;}
function _IG_RegisterOnloadHandler(callback){gadgets.util.registerOnLoadHandler(callback);}
function _IG_Callback(handler_func,var_args){var orig_args=arguments;return function(){var combined_args=Array.prototype.slice.call(arguments);handler_func.apply(null,combined_args.concat(Array.prototype.slice.call(orig_args,1)));};}
var _args=gadgets.util.getUrlParameters;function _gel(el){return document.getElementById?document.getElementById(el):null;}
function _gelstn(tag){if(tag==="*"&&document.all){return document.all;}
return document.getElementsByTagName?document.getElementsByTagName(tag):[];}
function _gelsbyregex(tagName,regex){var matchingTags=_gelstn(tagName);var matchingRegex=[];for(var i=0,j=matchingTags.length;i<j;++i){if(regex.test(matchingTags[i].id)){matchingRegex.push(matchingTags[i]);}}
return matchingRegex;}
function _esc(str){return window.encodeURIComponent?encodeURIComponent(str):escape(str);}
function _unesc(str){return window.decodeURIComponent?decodeURIComponent(str):unescape(str);}
function _hesc(str){return gadgets.util.escapeString(str);}
function _striptags(str){return str.replace(/<\/?[^>]+>/g,"");}
function _trim(str){return str.replace(/^\s+|\s+$/g,"");}
function _toggle(el){el=(typeof el==="string")?_gel(el):el;if(el!==null){if(el.style.display.length===0||el.style.display==="block"){el.style.display="none";}else if(el.style.display==="none"){el.style.display="block";}}}
var _global_legacy_uidCounter=0;function _uid(){return _global_legacy_uidCounter++;}
function _min(a,b){return(a<b?a:b);}
function _max(a,b){return(a>b?a:b);}
function _exportSymbols(name,sym){var attach=window;var parts=name.split(".");for(var i=0,j=parts.length;i<j;i++){var part=parts[i];attach[part]=attach[part]||{};attach=attach[part];}
for(var k=0,l=sym.length;k<l;k+=2){attach[sym[k]]=sym[k+1];}}
var html=(function(){var lcase;if('script'==='SCRIPT'.toLowerCase()){lcase=function(s){return s.toLowerCase();};}else{lcase=function(s){return s.replace(/[A-Z]/g,function(ch){return String.fromCharCode(ch.charCodeAt(0)|32);});};}
var ENTITIES={lt:'<',gt:'>',amp:'&',nbsp:'\240',quot:'"',apos:'\''};var decimalEscapeRe=/^#(\d+)$/;var hexEscapeRe=/^#x([0-9A-Fa-f]+)$/;function lookupEntity(name){name=lcase(name);if(ENTITIES.hasOwnProperty(name)){return ENTITIES[name];}
var m=name.match(decimalEscapeRe);if(m){return String.fromCharCode(parseInt(m[1],10));}else if(!!(m=name.match(hexEscapeRe))){return String.fromCharCode(parseInt(m[1],16));}
return'';}
function decodeOneEntity(_,name){return lookupEntity(name);}
var nulRe=/\0/g;function stripNULs(s){return s.replace(nulRe,'');}
var entityRe=/&(#\d+|#x[0-9A-Fa-f]+|\w+);/g;function unescapeEntities(s){return s.replace(entityRe,decodeOneEntity);}
var ampRe=/&/g;var looseAmpRe=/&([^a-z#]|#(?:[^0-9x]|x(?:[^0-9a-f]|$)|$)|$)/gi;var ltRe=/</g;var gtRe=/>/g;var quotRe=/\"/g;var eqRe=/\=/g;function escapeAttrib(s){return s.replace(ampRe,'&amp;').replace(ltRe,'&lt;').replace(gtRe,'&gt;').replace(quotRe,'&#34;').replace(eqRe,'&#61;');}
function normalizeRCData(rcdata){return rcdata.replace(looseAmpRe,'&amp;$1').replace(ltRe,'&lt;').replace(gtRe,'&gt;');}
var INSIDE_TAG_TOKEN=new RegExp('^\\s*(?:'
+('(?:'
+'([a-z][a-z-]*)'
+('('
+'\\s*=\\s*'
+('('
+'\"[^\"]*\"'
+'|\'[^\']*\''
+'|(?=[a-z][a-z-]*\\s*=)'
+'|[^>\"\'\\s]*'
+')')
+')')+'?'
+')')
+'|(/?>)'
+'|.[^\\w\\s>]*)','i');var OUTSIDE_TAG_TOKEN=new RegExp('^(?:'
+'&(\\#[0-9]+|\\#[x][0-9a-f]+|\\w+);'
+'|<\!--[\\s\\S]*?--\>|<!\\w[^>]*>|<\\?[^>*]*>'
+'|<(/)?([a-z][a-z0-9]*)'
+'|([^<&>]+)'
+'|([<&>]))','i');function makeSaxParser(handler){return function parse(htmlText,param){htmlText=String(htmlText);var htmlLower=null;var inTag=false;var attribs=[];var tagName=void 0;var eflags=void 0;var openTag=void 0;if(handler.startDoc){handler.startDoc(param);}
while(htmlText){var m=htmlText.match(inTag?INSIDE_TAG_TOKEN:OUTSIDE_TAG_TOKEN);htmlText=htmlText.substring(m[0].length);if(inTag){if(m[1]){var attribName=lcase(m[1]);var decodedValue;if(m[2]){var encodedValue=m[3];switch(encodedValue.charCodeAt(0)){case 34:case 39:encodedValue=encodedValue.substring(1,encodedValue.length-1);break;}
decodedValue=unescapeEntities(stripNULs(encodedValue));}else{decodedValue=attribName;}
attribs.push(attribName,decodedValue);}else if(m[4]){if(eflags!==void 0){if(openTag){if(handler.startTag){handler.startTag(tagName,attribs,param);}}else{if(handler.endTag){handler.endTag(tagName,param);}}}
if(openTag&&(eflags&(html4.eflags.CDATA|html4.eflags.RCDATA))){if(htmlLower===null){htmlLower=lcase(htmlText);}else{htmlLower=htmlLower.substring(htmlLower.length-htmlText.length);}
var dataEnd=htmlLower.indexOf('</'+tagName);if(dataEnd<0){dataEnd=htmlText.length;}
if(eflags&html4.eflags.CDATA){if(handler.cdata){handler.cdata(htmlText.substring(0,dataEnd),param);}}else if(handler.rcdata){handler.rcdata(normalizeRCData(htmlText.substring(0,dataEnd)),param);}
htmlText=htmlText.substring(dataEnd);}
tagName=eflags=openTag=void 0;attribs.length=0;inTag=false;}}else{if(m[1]){if(handler.pcdata){handler.pcdata(m[0],param);}}else if(m[3]){openTag=!m[2];inTag=true;tagName=lcase(m[3]);eflags=html4.ELEMENTS.hasOwnProperty(tagName)?html4.ELEMENTS[tagName]:void 0;}else if(m[4]){if(handler.pcdata){handler.pcdata(m[4],param);}}else if(m[5]){if(handler.pcdata){switch(m[5]){case'<':handler.pcdata('&lt;',param);break;case'>':handler.pcdata('&gt;',param);break;default:handler.pcdata('&amp;',param);break;}}}}}
if(handler.endDoc){handler.endDoc(param);}};}
return{normalizeRCData:normalizeRCData,escapeAttrib:escapeAttrib,unescapeEntities:unescapeEntities,makeSaxParser:makeSaxParser};})();html.makeHtmlSanitizer=function(sanitizeAttributes){var stack;var ignoring;return html.makeSaxParser({startDoc:function(_){stack=[];ignoring=false;},startTag:function(tagName,attribs,out){if(ignoring){return;}
if(!html4.ELEMENTS.hasOwnProperty(tagName)){return;}
var eflags=html4.ELEMENTS[tagName];if(eflags&html4.eflags.FOLDABLE){return;}else if(eflags&html4.eflags.UNSAFE){ignoring=!(eflags&html4.eflags.EMPTY);return;}
attribs=sanitizeAttributes(tagName,attribs);if(attribs){if(!(eflags&html4.eflags.EMPTY)){stack.push(tagName);}
out.push('<',tagName);for(var i=0,n=attribs.length;i<n;i+=2){var attribName=attribs[i],value=attribs[i+1];if(value!==null&&value!==void 0){out.push(' ',attribName,'="',html.escapeAttrib(value),'"');}}
out.push('>');}},endTag:function(tagName,out){if(ignoring){ignoring=false;return;}
if(!html4.ELEMENTS.hasOwnProperty(tagName)){return;}
var eflags=html4.ELEMENTS[tagName];if(!(eflags&(html4.eflags.UNSAFE|html4.eflags.EMPTY|html4.eflags.FOLDABLE))){var index;if(eflags&html4.eflags.OPTIONAL_ENDTAG){for(index=stack.length;--index>=0;){var stackEl=stack[index];if(stackEl===tagName){break;}
if(!(html4.ELEMENTS[stackEl]&html4.eflags.OPTIONAL_ENDTAG)){return;}}}else{for(index=stack.length;--index>=0;){if(stack[index]===tagName){break;}}}
if(index<0){return;}
for(var i=stack.length;--i>index;){var stackEl=stack[i];if(!(html4.ELEMENTS[stackEl]&html4.eflags.OPTIONAL_ENDTAG)){out.push('</',stackEl,'>');}}
stack.length=index;out.push('</',tagName,'>');}},pcdata:function(text,out){if(!ignoring){out.push(text);}},rcdata:function(text,out){if(!ignoring){out.push(text);}},cdata:function(text,out){if(!ignoring){out.push(text);}},endDoc:function(out){for(var i=stack.length;--i>=0;){out.push('</',stack[i],'>');}
stack.length=0;}});};function html_sanitize(htmlText,opt_urlPolicy,opt_nmTokenPolicy){var out=[];html.makeHtmlSanitizer(function sanitizeAttribs(tagName,attribs){for(var i=0;i<attribs.length;i+=2){var attribName=attribs[i];var value=attribs[i+1];var atype=null,attribKey;if((attribKey=tagName+'::'+attribName,html4.ATTRIBS.hasOwnProperty(attribKey))||(attribKey='*::'+attribName,html4.ATTRIBS.hasOwnProperty(attribKey))){atype=html4.ATTRIBS[attribKey];}
if(atype!==null){switch(atype){case html4.atype.SCRIPT:case html4.atype.STYLE:value=null;break;case html4.atype.IDREF:case html4.atype.IDREFS:case html4.atype.GLOBAL_NAME:case html4.atype.LOCAL_NAME:case html4.atype.CLASSES:value=opt_nmTokenPolicy?opt_nmTokenPolicy(value):value;break;case html4.atype.URI:value=opt_urlPolicy&&opt_urlPolicy(value);break;case html4.atype.URI_FRAGMENT:if(value&&'#'===value.charAt(0)){value=opt_nmTokenPolicy?opt_nmTokenPolicy(value):value;if(value){value='#'+value;}}else{value=null;}
break;}}else{value=null;}
attribs[i+1]=value;}
return attribs;})(htmlText,out);return out.join('');}
var gadgets=gadgets||{};gadgets.rpctx=gadgets.rpctx||{};if(!gadgets.rpctx.wpm){gadgets.rpctx.wpm=function(){var ready;return{getCode:function(){return'wpm';},isParentVerifiable:function(){return true;},init:function(processFn,readyFn){ready=readyFn;var onmessage=function(packet){processFn(gadgets.json.parse(packet.data));};if(typeof window.addEventListener!='undefined'){window.addEventListener('message',onmessage,false);}else if(typeof window.attachEvent!='undefined'){window.attachEvent('onmessage',onmessage);}
ready('..',true);return true;},setup:function(receiverId,token){if(receiverId==='..'){gadgets.rpc.call(receiverId,gadgets.rpc.ACK);}
return true;},call:function(targetId,from,rpc){var targetWin=gadgets.rpc._getTargetWin(targetId);var origRelay=gadgets.rpc.getRelayUrl(targetId)||gadgets.util.getUrlParameters()["parent"];var origin=gadgets.rpc.getOrigin(origRelay);if(origin){targetWin.postMessage(gadgets.json.stringify(rpc),origin);}else{gadgets.error("No relay set (used as window.postMessage targetOrigin)"+", cannot send cross-domain message");}
return true;}};}();}
var gadgets=gadgets||{};gadgets.rpctx=gadgets.rpctx||{};if(!gadgets.rpctx.frameElement){gadgets.rpctx.frameElement=function(){var FE_G2C_CHANNEL='__g2c_rpc';var FE_C2G_CHANNEL='__c2g_rpc';var process;var ready;function callFrameElement(targetId,from,rpc){try{if(from!=='..'){var fe=window.frameElement;if(typeof fe[FE_G2C_CHANNEL]==='function'){if(typeof fe[FE_G2C_CHANNEL][FE_C2G_CHANNEL]!=='function'){fe[FE_G2C_CHANNEL][FE_C2G_CHANNEL]=function(args){process(gadgets.json.parse(args));};}
fe[FE_G2C_CHANNEL](gadgets.json.stringify(rpc));return;}}else{var frame=document.getElementById(targetId);if(typeof frame[FE_G2C_CHANNEL]==='function'&&typeof frame[FE_G2C_CHANNEL][FE_C2G_CHANNEL]==='function'){frame[FE_G2C_CHANNEL][FE_C2G_CHANNEL](gadgets.json.stringify(rpc));return;}}}catch(e){}
return true;}
return{getCode:function(){return'fe';},isParentVerifiable:function(){return false;},init:function(processFn,readyFn){process=processFn;ready=readyFn;return true;},setup:function(receiverId,token){if(receiverId!=='..'){try{var frame=document.getElementById(receiverId);frame[FE_G2C_CHANNEL]=function(args){process(gadgets.json.parse(args));};}catch(e){return false;}}
if(receiverId==='..'){ready('..',true);var ackFn=function(){window.setTimeout(function(){gadgets.rpc.call(receiverId,gadgets.rpc.ACK)},500);}
gadgets.util.registerOnLoadHandler(ackFn);}
return true;},call:function(targetId,from,rpc){callFrameElement(targetId,from,rpc);}};}();}
var gadgets=gadgets||{};gadgets.rpctx=gadgets.rpctx||{};if(!gadgets.rpctx.nix){gadgets.rpctx.nix=function(){var NIX_WRAPPER='GRPC____NIXVBS_wrapper';var NIX_GET_WRAPPER='GRPC____NIXVBS_get_wrapper';var NIX_HANDLE_MESSAGE='GRPC____NIXVBS_handle_message';var NIX_CREATE_CHANNEL='GRPC____NIXVBS_create_channel';var MAX_NIX_SEARCHES=10;var NIX_SEARCH_PERIOD=500;var nix_channels={};var ready;var numHandlerSearches=0;function conductHandlerSearch(){var handler=nix_channels['..'];if(handler){return;}
if(++numHandlerSearches>MAX_NIX_SEARCHES){gadgets.warn('Nix transport setup failed, falling back...');ready('..',false);return;}
if(!handler&&window.opener&&"GetAuthToken"in window.opener){handler=window.opener;if(handler.GetAuthToken()==gadgets.rpc.getAuthToken('..')){var token=gadgets.rpc.getAuthToken('..');handler.CreateChannel(window[NIX_GET_WRAPPER]('..',token),token);nix_channels['..']=handler;window.opener=null;ready('..',true);return;}}
window.setTimeout(function(){conductHandlerSearch();},NIX_SEARCH_PERIOD);}
return{getCode:function(){return'nix';},isParentVerifiable:function(){return false;},init:function(processFn,readyFn){ready=readyFn;if(typeof window[NIX_GET_WRAPPER]!=='unknown'){window[NIX_HANDLE_MESSAGE]=function(data){window.setTimeout(function(){processFn(gadgets.json.parse(data))},0);};window[NIX_CREATE_CHANNEL]=function(name,channel,token){if(gadgets.rpc.getAuthToken(name)===token){nix_channels[name]=channel;ready(name,true);}};var vbscript='Class '+NIX_WRAPPER+'\n '
+'Private m_Intended\n'
+'Private m_Auth\n'
+'Public Sub SetIntendedName(name)\n '
+'If isEmpty(m_Intended) Then\n'
+'m_Intended = name\n'
+'End If\n'
+'End Sub\n'
+'Public Sub SetAuth(auth)\n '
+'If isEmpty(m_Auth) Then\n'
+'m_Auth = auth\n'
+'End If\n'
+'End Sub\n'
+'Public Sub SendMessage(data)\n '
+NIX_HANDLE_MESSAGE+'(data)\n'
+'End Sub\n'
+'Public Function GetAuthToken()\n '
+'GetAuthToken = m_Auth\n'
+'End Function\n'
+'Public Sub CreateChannel(channel, auth)\n '
+'Call '+NIX_CREATE_CHANNEL+'(m_Intended, channel, auth)\n'
+'End Sub\n'
+'End Class\n'
+'Function '+NIX_GET_WRAPPER+'(name, auth)\n'
+'Dim wrap\n'
+'Set wrap = New '+NIX_WRAPPER+'\n'
+'wrap.SetIntendedName name\n'
+'wrap.SetAuth auth\n'
+'Set '+NIX_GET_WRAPPER+' = wrap\n'
+'End Function';try{window.execScript(vbscript,'vbscript');}catch(e){return false;}}
return true;},setup:function(receiverId,token){if(receiverId==='..'){conductHandlerSearch();return true;}
try{var frame=document.getElementById(receiverId);var wrapper=window[NIX_GET_WRAPPER](receiverId,token);frame.contentWindow.opener=wrapper;}catch(e){return false;}
return true;},call:function(targetId,from,rpc){try{if(nix_channels[targetId]){nix_channels[targetId].SendMessage(gadgets.json.stringify(rpc));}}catch(e){return false;}
return true;}};}();}
var gadgets=gadgets||{};gadgets.rpctx=gadgets.rpctx||{};if(!gadgets.rpctx.rmr){gadgets.rpctx.rmr=function(){var RMR_SEARCH_TIMEOUT=500;var RMR_MAX_POLLS=10;var rmr_channels={};var process;var ready;function appendRmrFrame(channelFrame,relayUri,data,opt_frameId){var appendFn=function(){document.body.appendChild(channelFrame);channelFrame.src='about:blank';if(opt_frameId){channelFrame.onload=function(){processRmrData(opt_frameId);}}
channelFrame.src=relayUri+'#'+data;}
if(document.body){appendFn();}else{gadgets.util.registerOnLoadHandler(function(){appendFn();});}}
function setupRmr(frameId){if(typeof rmr_channels[frameId]==="object"){return;}
var channelFrame=document.createElement('iframe');var frameStyle=channelFrame.style;frameStyle.position='absolute';frameStyle.top='0px';frameStyle.border='0';frameStyle.opacity='0';frameStyle.width='10px'
frameStyle.height='1px';channelFrame.id='rmrtransport-'+frameId;channelFrame.name=channelFrame.id;var relayUri=gadgets.rpc.getRelayUrl(frameId);if(!relayUri){relayUri=gadgets.rpc.getOrigin(gadgets.util.getUrlParameters()["parent"])+'/robots.txt';}
rmr_channels[frameId]={frame:channelFrame,receiveWindow:null,relayUri:relayUri,searchCounter:0,width:10,waiting:true,queue:[],sendId:0,recvId:0};if(frameId!=='..'){appendRmrFrame(channelFrame,relayUri,getRmrData(frameId));}
conductRmrSearch(frameId);}
function conductRmrSearch(frameId){var channelWindow=null;rmr_channels[frameId].searchCounter++;try{var targetWin=gadgets.rpc._getTargetWin(frameId);if(frameId==='..'){channelWindow=targetWin.frames['rmrtransport-'+gadgets.rpc.RPC_ID];}else{channelWindow=targetWin.frames['rmrtransport-..'];}}catch(e){}
var status=false;if(channelWindow){status=registerRmrChannel(frameId,channelWindow);}
if(!status){if(rmr_channels[frameId].searchCounter>RMR_MAX_POLLS){return;}
window.setTimeout(function(){conductRmrSearch(frameId);},RMR_SEARCH_TIMEOUT);}}
function callRmr(targetId,serviceName,from,rpc){var handler=null;if(from!=='..'){handler=rmr_channels['..'];}else{handler=rmr_channels[targetId];}
if(handler){if(serviceName!==gadgets.rpc.ACK){handler.queue.push(rpc);}
if(handler.waiting||(handler.queue.length===0&&!(serviceName===gadgets.rpc.ACK&&rpc&&rpc.ackAlone===true))){return true;}
if(handler.queue.length>0){handler.waiting=true;}
var url=handler.relayUri+"#"+getRmrData(targetId);try{handler.frame.contentWindow.location=url;var newWidth=handler.width==10?20:10;handler.frame.style.width=newWidth+'px';handler.width=newWidth;}catch(e){return false;}}
return true;}
function getRmrData(toFrameId){var channel=rmr_channels[toFrameId];var rmrData={id:channel.sendId};if(channel){rmrData.d=Array.prototype.slice.call(channel.queue,0);rmrData.d.push({s:gadgets.rpc.ACK,id:channel.recvId});}
return gadgets.json.stringify(rmrData);}
function processRmrData(fromFrameId){var channel=rmr_channels[fromFrameId];var data=channel.receiveWindow.location.hash.substring(1);var rpcObj=gadgets.json.parse(decodeURIComponent(data))||{};var rpcArray=rpcObj.d||[];var nonAckReceived=false;var noLongerWaiting=false;var numBypassed=0;var numToBypass=(channel.recvId-rpcObj.id);for(var i=0;i<rpcArray.length;++i){var rpc=rpcArray[i];if(rpc.s===gadgets.rpc.ACK){ready(fromFrameId,true);if(channel.waiting){noLongerWaiting=true;}
channel.waiting=false;var newlyAcked=Math.max(0,rpc.id-channel.sendId);channel.queue.splice(0,newlyAcked);channel.sendId=Math.max(channel.sendId,rpc.id||0);continue;}
nonAckReceived=true;if(++numBypassed<=numToBypass){continue;}
++channel.recvId;process(rpc);}
if(nonAckReceived||(noLongerWaiting&&channel.queue.length>0)){var from=(fromFrameId==='..')?gadgets.rpc.RPC_ID:'..';callRmr(fromFrameId,gadgets.rpc.ACK,from,{ackAlone:nonAckReceived});}}
function registerRmrChannel(frameId,channelWindow){var channel=rmr_channels[frameId];try{var canAccess=false;canAccess='document'in channelWindow;if(!canAccess){return false;}
canAccess=typeof channelWindow['document']=='object';if(!canAccess){return false;}
var loc=channelWindow.location.href;if(loc==='about:blank'){return false;}}catch(ex){return false;}
channel.receiveWindow=channelWindow;function onresize(){processRmrData(frameId);};if(typeof channelWindow.attachEvent==="undefined"){channelWindow.onresize=onresize;}else{channelWindow.attachEvent("onresize",onresize);}
if(frameId==='..'){appendRmrFrame(channel.frame,channel.relayUri,getRmrData(frameId),frameId);}else{processRmrData(frameId);}
return true;}
return{getCode:function(){return'rmr';},isParentVerifiable:function(){return true;},init:function(processFn,readyFn){process=processFn;ready=readyFn;return true;},setup:function(receiverId,token){try{setupRmr(receiverId);}catch(e){gadgets.warn('Caught exception setting up RMR: '+e);return false;}
return true;},call:function(targetId,from,rpc){return callRmr(targetId,rpc.s,from,rpc);}};}();}
var gadgets=gadgets||{};gadgets.rpctx=gadgets.rpctx||{};if(!gadgets.rpctx.ifpc){gadgets.rpctx.ifpc=function(){var iframePool=[];var callId=0;var ready;function encodeLegacyData(args){var argsEscaped=[];for(var i=0,j=args.length;i<j;++i){argsEscaped.push(encodeURIComponent(gadgets.json.stringify(args[i])));}
return argsEscaped.join('&');}
function emitInvisibleIframe(src){var iframe;for(var i=iframePool.length-1;i>=0;--i){var ifr=iframePool[i];try{if(ifr&&(ifr.recyclable||ifr.readyState==='complete')){ifr.parentNode.removeChild(ifr);if(window.ActiveXObject){iframePool[i]=ifr=null;iframePool.splice(i,1);}else{ifr.recyclable=false;iframe=ifr;break;}}}catch(e){}}
if(!iframe){iframe=document.createElement('iframe');iframe.style.border=iframe.style.width=iframe.style.height='0px';iframe.style.visibility='hidden';iframe.style.position='absolute';iframe.onload=function(){this.recyclable=true;};iframePool.push(iframe);}
iframe.src=src;window.setTimeout(function(){document.body.appendChild(iframe);},0);}
return{getCode:function(){return'ifpc';},isParentVerifiable:function(){return true;},init:function(processFn,readyFn){ready=readyFn;ready('..',true);return true;},setup:function(receiverId,token){ready(receiverId,true);return true;},call:function(targetId,from,rpc){var relay=gadgets.rpc.getRelayUrl(targetId);++callId;if(!relay){gadgets.warn('No relay file assigned for IFPC');return;}
var src=null;if(rpc.l){var callArgs=rpc.a;src=[relay,'#',encodeLegacyData([from,callId,1,0,encodeLegacyData([from,rpc.s,'','',from].concat(callArgs))])].join('');}else{src=[relay,'#',targetId,'&',from,'@',callId,'&1&0&',encodeURIComponent(gadgets.json.stringify(rpc))].join('');}
emitInvisibleIframe(src);return true;}};}();}
var gadgets=gadgets||{};if(!gadgets.rpc){gadgets.rpc=function(){var CALLBACK_NAME='__cb';var DEFAULT_NAME='';var ACK='__ack';var SETUP_FRAME_TIMEOUT=500;var SETUP_FRAME_MAX_TRIES=10;var services={};var relayUrl={};var useLegacyProtocol={};var authToken={};var callId=0;var callbacks={};var setup={};var sameDomain={};var params={};var receiverTx={};var earlyRpcQueue={};var isChild=(window.top!==window.self);var rpcId=window.name;var fallbackTransport=(function(){function logFn(name){return function(){gadgets.log("gadgets.rpc."+name+"("+
gadgets.json.stringify(Array.prototype.slice.call(arguments))+"): call ignored. [caller: "+document.location+", isChild: "+isChild+"]");}}
return{getCode:function(){return"noop";},isParentVerifiable:function(){return true;},init:logFn("init"),setup:logFn("setup"),call:logFn("call")}})();if(gadgets.util){params=gadgets.util.getUrlParameters();}
var useEarlyQueueing=(params['rpc_earlyq']==="1");function getTransport(){return typeof window.postMessage==='function'?gadgets.rpctx.wpm:typeof window.postMessage==='object'?gadgets.rpctx.wpm:window.ActiveXObject?gadgets.rpctx.nix:navigator.userAgent.indexOf('WebKit')>0?gadgets.rpctx.rmr:navigator.product==='Gecko'?gadgets.rpctx.frameElement:gadgets.rpctx.ifpc;}
function transportReady(receiverId,readySuccess){var tx=transport;if(!readySuccess){tx=fallbackTransport;}
receiverTx[receiverId]=tx;var earlyQueue=earlyRpcQueue[receiverId]||[];for(var i=0;i<earlyQueue.length;++i){var rpc=earlyQueue[i];rpc.t=getAuthToken(receiverId);tx.call(receiverId,rpc.f,rpc);}
earlyRpcQueue[receiverId]=[];}
function process(rpc){if(rpc&&typeof rpc.s==='string'&&typeof rpc.f==='string'&&rpc.a instanceof Array){if(authToken[rpc.f]){if(authToken[rpc.f]!==rpc.t){throw new Error("Invalid auth token. "+
authToken[rpc.f]+" vs "+rpc.t);}}
if(rpc.s===ACK){window.setTimeout(function(){transportReady(rpc.f,true);},0);return;}
if(rpc.c){rpc.callback=function(result){gadgets.rpc.call(rpc.f,CALLBACK_NAME,null,rpc.c,result);};}
var result=(services[rpc.s]||services[DEFAULT_NAME]).apply(rpc,rpc.a);if(rpc.c&&typeof result!=='undefined'){gadgets.rpc.call(rpc.f,CALLBACK_NAME,null,rpc.c,result);}}}
function getOrigin(url){if(!url){return"";}
url=url.toLowerCase();if(url.indexOf("//")==0){url=window.location.protocol+url;}
if(url.indexOf("://")==-1){url=window.location.protocol+"//"+url;}
var host=url.substring(url.indexOf("://")+3);var slashPos=host.indexOf("/");if(slashPos!=-1){host=host.substring(0,slashPos);}
var protocol=url.substring(0,url.indexOf("://"));var portStr="";var portPos=host.indexOf(":");if(portPos!=-1){var port=host.substring(portPos+1);host=host.substring(0,portPos);if((protocol==="http"&&port!=="80")||(protocol==="https"&&port!=="443")){portStr=":"+port;}}
return protocol+"://"+host+portStr;}
function getTargetWin(id){if(typeof id==="undefined"||id===".."){return window.parent;}
id=String(id);var target=window.frames[id];if(target){return target;}
target=document.getElementById(id);if(target&&target.contentWindow){return target.contentWindow;}
return null;}
var transport=getTransport();services[DEFAULT_NAME]=function(){gadgets.warn('Unknown RPC service: '+this.s);};services[CALLBACK_NAME]=function(callbackId,result){var callback=callbacks[callbackId];if(callback){delete callbacks[callbackId];callback(result);}};function setupFrame(frameId,token){if(setup[frameId]===true){return;}
if(typeof setup[frameId]==='undefined'){setup[frameId]=0;}
var tgtFrame=document.getElementById(frameId);if(frameId==='..'||tgtFrame!=null){if(transport.setup(frameId,token)===true){setup[frameId]=true;return;}}
if(setup[frameId]!==true&&setup[frameId]++<SETUP_FRAME_MAX_TRIES){window.setTimeout(function(){setupFrame(frameId,token)},SETUP_FRAME_TIMEOUT);}else{receiverTx[frameId]=fallbackTransport;setup[frameId]=true;}}
function callSameDomain(target,rpc){if(typeof sameDomain[target]==='undefined'){sameDomain[target]=false;var targetRelay=gadgets.rpc.getRelayUrl(target);if(getOrigin(targetRelay)!==getOrigin(window.location.href)){return false;}
var targetEl=getTargetWin(target);try{sameDomain[target]=targetEl.gadgets.rpc.receiveSameDomain;}catch(e){gadgets.error("Same domain call failed: parent= incorrectly set.");}}
if(typeof sameDomain[target]==='function'){sameDomain[target](rpc);return true;}
return false;}
function setRelayUrl(targetId,url,opt_useLegacy){relayUrl[targetId]=url;useLegacyProtocol[targetId]=!!opt_useLegacy;}
function getAuthToken(targetId){return authToken[targetId];}
function setAuthToken(targetId,token){token=token||"";authToken[targetId]=String(token);setupFrame(targetId,token);}
function setupContainerGadgetContext(rpctoken){function init(config){var configRpc=config?config.rpc:{};var parentRelayUrl=configRpc.parentRelayUrl;if(parentRelayUrl.substring(0,7)!=='http://'&&parentRelayUrl.substring(0,8)!=='https://'&&parentRelayUrl.substring(0,2)!=='//'){if(typeof params.parent==="string"&&params.parent!==""){if(parentRelayUrl.substring(0,1)!=='/'){var lastSlash=params.parent.lastIndexOf('/');parentRelayUrl=params.parent.substring(0,lastSlash+1)+parentRelayUrl;}else{parentRelayUrl=getOrigin(params.parent)+parentRelayUrl;}}}
var useLegacy=!!configRpc.useLegacyProtocol;setRelayUrl('..',parentRelayUrl,useLegacy);if(useLegacy){transport=gadgets.rpctx.ifpc;transport.init(process,transportReady);}
setAuthToken('..',rpctoken);}
var requiredConfig={parentRelayUrl:gadgets.config.NonEmptyStringValidator};gadgets.config.register("rpc",requiredConfig,init);}
function setupContainerGenericIframe(rpctoken,opt_parent){var parent=opt_parent||params.parent;if(parent){setRelayUrl('..',parent);setAuthToken('..',rpctoken);}}
function setupChildIframe(gadgetId,opt_frameurl,opt_authtoken){if(!gadgets.util){return;}
var childIframe=document.getElementById(gadgetId);if(!childIframe){throw new Error("Cannot set up gadgets.rpc receiver with ID: "+gadgetId+", element not found.");}
var relayUrl=opt_frameurl||childIframe.src;setRelayUrl(gadgetId,relayUrl);var childParams=gadgets.util.getUrlParameters(childIframe.src);var rpctoken=opt_authtoken||childParams.rpctoken;setAuthToken(gadgetId,rpctoken);}
function setupReceiver(targetId,opt_receiverurl,opt_authtoken){if(targetId==='..'){var rpctoken=opt_authtoken||params.rpctoken||params.ifpctok||"";if(window['__isgadget']===true){setupContainerGadgetContext(rpctoken);}else{setupContainerGenericIframe(rpctoken,opt_receiverurl);}}else{setupChildIframe(targetId,opt_receiverurl,opt_authtoken);}}
return{register:function(serviceName,handler){if(serviceName===CALLBACK_NAME||serviceName===ACK){throw new Error("Cannot overwrite callback/ack service");}
if(serviceName===DEFAULT_NAME){throw new Error("Cannot overwrite default service:"
+" use registerDefault");}
services[serviceName]=handler;},unregister:function(serviceName){if(serviceName===CALLBACK_NAME||serviceName===ACK){throw new Error("Cannot delete callback/ack service");}
if(serviceName===DEFAULT_NAME){throw new Error("Cannot delete default service:"
+" use unregisterDefault");}
delete services[serviceName];},registerDefault:function(handler){services[DEFAULT_NAME]=handler;},unregisterDefault:function(){delete services[DEFAULT_NAME];},forceParentVerifiable:function(){if(!transport.isParentVerifiable()){transport=gadgets.rpctx.ifpc;}},call:function(targetId,serviceName,callback,var_args){targetId=targetId||'..';var from='..';if(targetId==='..'){from=rpcId;}
++callId;if(callback){callbacks[callId]=callback;}
var rpc={s:serviceName,f:from,c:callback?callId:0,a:Array.prototype.slice.call(arguments,3),t:authToken[targetId],l:useLegacyProtocol[targetId]};if(targetId!=='..'&&!document.getElementById(targetId)){gadgets.log("WARNING: attempted send to nonexistent frame: "+targetId);return;}
if(callSameDomain(targetId,rpc)){return;}
var channel=receiverTx[targetId]?receiverTx[targetId]:transport;if(!channel){if(!earlyRpcQueue[targetId]){earlyRpcQueue[targetId]=[rpc];}else{earlyRpcQueue[targetId].push(rpc);}
return;}
if(useLegacyProtocol[targetId]){channel=gadgets.rpctx.ifpc;}
if(channel.call(targetId,from,rpc)===false){receiverTx[targetId]=fallbackTransport;transport.call(targetId,from,rpc);}},getRelayUrl:function(targetId){var url=relayUrl[targetId];if(url&&url.indexOf('//')==0){url=document.location.protocol+url;}
return url;},setRelayUrl:setRelayUrl,setAuthToken:setAuthToken,setupReceiver:setupReceiver,getAuthToken:getAuthToken,getRelayChannel:function(){return transport.getCode();},receive:function(fragment){if(fragment.length>4){process(gadgets.json.parse(decodeURIComponent(fragment[fragment.length-1])));}},receiveSameDomain:function(rpc){rpc.a=Array.prototype.slice.call(rpc.a);window.setTimeout(function(){process(rpc);},0);},getOrigin:getOrigin,init:function(){if(transport.init(process,transportReady)===false){transport=fallbackTransport;}
if(isChild){setupReceiver('..');}},_getTargetWin:getTargetWin,ACK:ACK,RPC_ID:rpcId};}();gadgets.rpc.init();}