var gadgets={};;
var gadgets=gadgets||{};gadgets.config=function(){var A={};return{register:function(D,C,B){if(A[D]){throw new Error('Component "'+D+'" is already registered.')}A[D]={validators:C||{},callback:B}},get:function(B){if(B){if(!A[B]){throw new Error('Component "'+B+'" not registered.')}return configuration[B]||{}}return configuration},init:function(H,G){configuration=H;for(var F in A){if(A.hasOwnProperty(F)){var E=A[F],D=H[F],B=E.validators;if(!G){for(var C in B){if(B.hasOwnProperty(C)){if(!B[C](D[C])){throw new Error('Invalid config value "'+D[C]+'" for parameter "'+C+'" in component "'+F+'"')}}}}if(E.callback){E.callback(H)}}}},EnumValidator:function(E){var D=[];if(arguments.length>1){for(var C=0,B;B=arguments[C];++C){D.push(B)}}else{D=E}return function(G){for(var F=0,H;H=D[F];++F){if(G===D[F]){return true}}}},RegExValidator:function(B){return function(C){return B.test(C)}},ExistsValidator:function(B){return typeof B!=="undefined"},NonEmptyStringValidator:function(B){return typeof B==="string"&&B.length>0},BooleanValidator:function(B){return typeof B==="boolean"},LikeValidator:function(B){return function(D){for(var E in B){if(B.hasOwnProperty(E)){var C=B[E];if(!C(D[E])){return false}}}return true}}}}();;
var gadgets=gadgets||{};gadgets.util=function(){function F(){var K;var J=document.location.href;var H=J.indexOf("?");var I=J.indexOf("#");if(I===-1){K=J.substr(H+1)}else{K=[J.substr(H+1,I-H-1),"&",J.substr(I+1)].join("")}return K.split("&")}var D=null;var C={};var E=[];var A={0:false,10:true,13:true,34:true,39:true,60:true,62:true,92:true,8232:true,8233:true};function B(H,I){return String.fromCharCode(I)}function G(H){C=H["core.util"]||{}}if(gadgets.config){gadgets.config.register("core.util",null,G)}return{getUrlParameters:function(){if(D!==null){return D}D={};var K=F();var N=window.decodeURIComponent?decodeURIComponent:unescape;for(var I=0,H=K.length;I<H;++I){var M=K[I].indexOf("=");if(M===-1){continue}var L=K[I].substring(0,M);var J=K[I].substring(M+1);J=J.replace(/\+/g," ");D[L]=N(J)}return D},makeClosure:function(K,M,L){var J=[];for(var I=2,H=arguments.length;I<H;++I){J.push(arguments[I])}return function(){var N=J.slice();for(var P=0,O=arguments.length;P<O;++P){N.push(arguments[P])}return M.apply(K,N)}},makeEnum:function(I){var K={};for(var J=0,H;H=I[J];++J){K[H]=H}return K},getFeatureParameters:function(H){return typeof C[H]==="undefined"?null:C[H]},hasFeature:function(H){return typeof C[H]!=="undefined"},registerOnLoadHandler:function(H){E.push(H)},runOnLoadHandlers:function(){for(var I=0,H=E.length;I<H;++I){E[I]()}},escape:function(H,L){if(!H){return H}else{if(typeof H==="string"){return gadgets.util.escapeString(H)}else{if(typeof H==="array"){for(var K=0,I=H.length;K<I;++K){H[K]=gadgets.util.escape(H[K])}}else{if(typeof H==="object"&&L){var J={};for(var M in H){if(H.hasOwnProperty(M)){J[gadgets.util.escapeString(M)]=gadgets.util.escape(H[M],true)}}return J}}}}return H},escapeString:function(L){var I=[],K,M;for(var J=0,H=L.length;J<H;++J){K=L.charCodeAt(J);M=A[K];if(M===true){I.push("&#",K,";")}else{if(M!==false){I.push(L.charAt(J))}}}return I.join("")},unescapeString:function(H){return H.replace(/&#([0-9]+);/g,B)}}}();gadgets.util.getUrlParameters();;
var shindig=shindig||{};shindig.Auth=function(){var authToken=null;var trusted=null;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+")")}}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("&")}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||{};(function(){var B=null;var C={};var E={};var G="en";var F="US";var D=0;function A(){var I=gadgets.util.getUrlParameters();for(var H in I){if(I.hasOwnProperty(H)){if(H.indexOf("up_")===0&&H.length>3){C[H.substr(3)]=String(I[H])}else{if(H==="country"){F=I[H]}else{if(H==="lang"){G=I[H]}else{if(H==="mid"){D=I[H]}}}}}}}gadgets.Prefs=function(){if(!B){A();B=this}return B};gadgets.Prefs.setInternal_=function(I,J){if(typeof I==="string"){C[I]=J}else{for(var H in I){if(I.hasOwnProperty(H)){C[H]=I[H]}}}};gadgets.Prefs.setMessages_=function(H){msgs=H};gadgets.Prefs.prototype.getString=function(H){return C[H]?gadgets.util.escapeString(C[H]):""};gadgets.Prefs.prototype.getInt=function(H){var I=parseInt(C[H],10);return isNaN(I)?0:I};gadgets.Prefs.prototype.getFloat=function(H){var I=parseFloat(C[H]);return isNaN(I)?0:I};gadgets.Prefs.prototype.getBool=function(H){var I=C[H];if(I){return I==="true"||I===true||!!parseInt(I,10)}return false};gadgets.Prefs.prototype.set=function(H,I){throw new Error("setprefs feature required to make this call.")};gadgets.Prefs.prototype.getArray=function(L){var M=C[L];if(M){var H=M.split("|");var I=gadgets.util.escapeString;for(var K=0,J=H.length;K<J;++K){H[K]=I(H[K].replace(/%7C/g,"|"))}return H}return[]};gadgets.Prefs.prototype.setArray=function(H,I){throw new Error("setprefs feature required to make this call.")};gadgets.Prefs.prototype.getMsg=function(H){return msgs[H]||""};gadgets.Prefs.prototype.getCountry=function(){return F};gadgets.Prefs.prototype.getLang=function(){return G};gadgets.Prefs.prototype.getModuleId=function(){return D}})();;
var gadgets=gadgets||{};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(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 JSON=gadgets.json;var _IG_Prefs=gadgets.Prefs;_IG_Prefs._parseURL=gadgets.Prefs.parseUrl;function _IG_Fetch_wrapper(B,A){B(A.data)}function _IG_FetchContent(B,E,C){var D=C||{};if(D.refreshInterval){D.REFRESH_INTERVAL=D.refreshInterval}else{D.REFRESH_INTERVAL=3600}var A=gadgets.util.makeClosure(null,_IG_Fetch_wrapper,E);gadgets.io.makeRequest(B,A,D)}function _IG_FetchXmlContent(B,E,C){var D=C||{};if(D.refreshInterval){D.REFRESH_INTERVAL=D.refreshInterval}else{D.REFRESH_INTERVAL=3600}D.CONTENT_TYPE="DOM";var A=gadgets.util.makeClosure(null,_IG_Fetch_wrapper,E);gadgets.io.makeRequest(B,A,D)}function _IG_FetchFeedAsJSON(B,F,C,A,D){var E=D||{};E.CONTENT_TYPE="FEED";E.NUM_ENTRIES=C;E.GET_SUMMARIES=A;gadgets.io.makeRequest(B,function(G){if(G.errors){G.data=G.data||{};if(G.errors&&G.errors.length>0){G.data.ErrorMsg=G.errors[0]}}F(G.data)},E)}function _IG_GetCachedUrl(A){return gadgets.io.getProxyUrl(A)}function _IG_GetImageUrl(A){return gadgets.io.getProxyUrl(A)}function _IG_RegisterOnloadHandler(A){gadgets.util.registerOnLoadHandler(A)}function _IG_Callback(B,C){var A=arguments;return function(){var D=Array.prototype.slice.call(arguments);B.apply(null,D.concat(Array.prototype.slice.call(A,1)))}}var _args=gadgets.util.getUrlParameters;function _gel(A){return document.getElementById?document.getElementById(A):null}function _gelstn(A){if(A==="*"&&document.all){return document.all}return document.getElementsByTagName?document.getElementsByTagName(A):[]}function _gelsbyregex(D,F){var C=_gelstn(D);var E=[];for(var B=0,A=C.length;B<A;++B){if(F.test(C[B].id)){E.push(C[B])}}return E}function _esc(A){return window.encodeURIComponent?encodeURIComponent(A):escape(A)}function _unesc(A){return window.decodeURIComponent?decodeURIComponent(A):unescape(A)}function _hesc(A){return gadgets.util.escapeString(A)}function _striptags(A){return A.replace(/<\/?[^>]+>/g,"")}function _trim(A){return A.replace(/^\s+|\s+$/g,"")}function _toggle(A){A=_gel(A);if(A!==null){if(A.style.display.length===0||A.style.display==="block"){A.style.display="none"}else{if(A.style.display==="none"){A.style.display="block"}}}}var _global_legacy_uidCounter=0;function _uid(){return _global_legacy_uidCounter++}function _min(B,A){return(B<A?B:A)}function _max(B,A){return(B>A?B:A)}function _exportSymbols(A,B){var H={};for(var I=0,F=B.length;I<F;I+=2){H[B[I]]=B[I+1]}var E=A.split(".");var J=window;for(var D=0,C=E.length-1;D<C;++D){var G={};J[E[D]]=G;J=G}J[E[E.length-1]]=H};;
var gadgets=gadgets||{};gadgets.io=function(){var config={};var oauthState;function makeXhr(){if(window.XMLHttpRequest){return new window.XMLHttpRequest()}else{if(window.ActiveXObject){var x=new ActiveXObject("Msxml2.XMLHTTP");if(!x){x=new ActiveXObject("Microsoft.XMLHTTP")}return x}}}function hadError(xobj,callback){if(xobj.readyState!==4){return true}if(xobj.status!==200){callback({errors:["Error "+xobj.status]});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,oauthApprovalUrl:data.oauthApprovalUrl,oauthError:data.oauthError,oauthErrorText:data.oauthErrorText,errors:[]};if(resp.text){switch(params.CONTENT_TYPE){case"JSON":case"FEED":resp.data=gadgets.json.parse(resp.text);if(!resp.data){resp.errors.push("failed to parse JSON");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("failed to parse XML")}else{resp.data=dom}}else{var parser=new DOMParser();dom=parser.parseFromString(resp.text,"text/xml");if("parsererror"===dom.documentElement.nodeName){resp.errors.push("failed to parse XML")}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();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_&&gadgets.io.preloaded_[postData.url]){var preload=gadgets.io.preloaded_[postData.url];if(postData.httpMethod=="GET"){delete gadgets.io.preloaded_[postData.url];if(preload.rc!==200){callback({errors:["Error "+preload.rc]})}else{callback(transformResponseData(params,{body:preload.body}))}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=params.OWNER_SIGNED;var signViewer=params.VIEWER_SIGNED;var headers=params.HEADERS||{};if(httpMethod==="POST"&&!headers["Content-Type"]){headers["Content-Type"]="application/x-www-form-urlencoded"}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||"true",signViewer:signViewer||"true",gadget:gadgets.util.getUrlParameters().url,bypassSpecCache:gadgets.util.getUrlParameters().nocache||""};if(params.AUTHORIZATION==="OAUTH"){paramData.oauthState=oauthState||"";for(opt in params){if(params.hasOwnProperty(opt)){if(opt.indexOf("OAUTH_")===0){paramData[opt]=params[opt]}}}}if(!respondWithPreload(paramData,params,callback,processResponse)){if(httpMethod==="GET"&&refreshInterval>0){var extraparams="?refresh="+refreshInterval+"&"+gadgets.io.encodeValues(paramData);makeXhrRequest(url,config.jsonProxyUrl+extraparams,callback,null,"GET",params,processResponse)}else{makeXhrRequest(url,config.jsonProxyUrl,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"}return config.proxyUrl.replace("%url%",encodeURIComponent(url)).replace("%rawurl%",url).replace("%refresh%",encodeURIComponent(refresh))}}}();gadgets.io.RequestParameters=gadgets.util.makeEnum(["METHOD","CONTENT_TYPE","POST_DATA","HEADERS","AUTHORIZATION","NUM_ENTRIES","GET_SUMMARIES","REFRESH_INTERVAL","OAUTH_SERVICE_NAME","OAUTH_TOKEN_NAME","OAUTH_REQUEST_TOKEN","OAUTH_REQUEST_TOKEN_SECRET"]);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 gadgets=gadgets||{};gadgets.rpc=function(){var L="__cb";var J="";var W="__g2c_rpc";var D="__c2g_rpc";var B={};var Q=[];var C={};var O={};var F={};var H=0;var X={};var N={};var V={};if(gadgets.util){V=gadgets.util.getUrlParameters()}F[".."]=V.rpctoken||V.ifpctok||0;function S(){return typeof window.postMessage==="function"?"wpm":typeof document.postMessage==="function"?"dpm":navigator.product==="Gecko"?"fe":"ifpc"}function U(){if(E==="dpm"||E==="wpm"){window.addEventListener("message",function(Y){M(gadgets.json.parse(Y.data))},false)}}var E=S();U();B[J]=function(){throw new Error("Unknown RPC service: "+this.s)};B[L]=function(Z,Y){var a=X[Z];if(a){delete X[Z];a(Y)}};function I(Y){if(N[Y]){return }if(E==="fe"){try{var a=document.getElementById(Y);a[W]=function(b){M(gadgets.json.parse(b))}}catch(Z){}}N[Y]=true}function P(a){var c=gadgets.json.stringify;var Y=[];for(var b=0,Z=a.length;b<Z;++b){Y.push(encodeURIComponent(c(a[b])))}return Y.join("&")}function M(Z){if(Z&&typeof Z.s==="string"&&typeof Z.f==="string"&&Z.a instanceof Array){if(F[Z.f]){if(F[Z.f]!=Z.t){throw new Error("Invalid auth token.")}}var Y=(B[Z.s]||B[J]).apply(Z,Z.a);if(Z.c){gadgets.rpc.call(Z.f,L,null,Z.c,Y)}}}function A(Z,d,a){try{if(d!=".."){var Y=window.frameElement;if(typeof Y[W]==="function"){if(typeof Y[W][D]!=="function"){Y[W][D]=function(e){M(gadgets.json.parse(e))}}Y[W](a);return }}else{var c=document.getElementById(Z);if(typeof c[W]==="function"&&typeof c[W][D]==="function"){c[W][D](a);return }}}catch(b){}T(Z,d,a)}function T(Y,c,Z){var b=gadgets.rpc.getRelayUrl(Y);if(!b){throw new Error("No relay file assigned for IFPC")}var a=null;if(O[Y]){a=[b,"#",P([c,H,1,0,P([c,serviceName,"","",c].concat(Array.prototype.slice.call(arguments,3)))])].join("")}else{a=[b,"#",Y,"&",c,"@",H,"&1&0&",encodeURIComponent(Z)].join("")}G(a)}function G(b){var Z;for(var Y=Q.length-1;Y>=0;--Y){var c=Q[Y];try{if(c&&(c.recyclable||c.readyState==="complete")){c.parentNode.removeChild(c);if(window.ActiveXObject){Q[Y]=c=null;Q.splice(Y,1)}else{c.recyclable=false;Z=c;break}}}catch(a){}}if(!Z){Z=document.createElement("iframe");Z.style.border=Z.style.width=Z.style.height="0px";Z.style.visibility="hidden";Z.style.position="absolute";Z.onload=function(){this.recyclable=true};Q.push(Z)}Z.src=b;setTimeout(function(){document.body.appendChild(Z)},0)}if(gadgets.config){function R(Y){if(Y.rpc.parentRelayUrl.substring(0,7)==="http://"){C[".."]=Y.rpc.parentRelayUrl}else{var c=document.location.search.substring(0).split("&");var b="";for(var Z=0,a;a=c[Z];++Z){if(a.indexOf("parent=")===0){b=decodeURIComponent(a.substring(7));break}}C[".."]=b+Y.rpc.parentRelayUrl}O[".."]=!!Y.rpc.useLegacyProtocol}var K={parentRelayUrl:gadgets.config.NonEmptyStringValidator};gadgets.config.register("rpc",K,R)}return{register:function(Z,Y){if(Z==L){throw new Error("Cannot overwrite callback service")}if(Z==J){throw new Error("Cannot overwrite default service: use registerDefault")}B[Z]=Y},unregister:function(Y){if(Y==L){throw new Error("Cannot delete callback service")}if(Y==J){throw new Error("Cannot delete default service: use unregisterDefault")}delete B[Y]},registerDefault:function(Y){B[""]=Y},unregisterDefault:function(){delete B[""]},call:function(e,a,f,d){++H;e=e||"..";if(f){X[H]=f}var c="..";if(e===".."){c=window.name}var Y=gadgets.json.stringify({s:a,f:c,c:f?H:0,a:Array.prototype.slice.call(arguments,3),t:F[e]});var Z=E;if(O[e]){Z="ifpc"}switch(Z){case"dpm":var g=e===".."?parent.document:frames[e].document;g.postMessage(Y);break;case"wpm":var b=e===".."?parent:frames[e];b.postMessage(Y,"*");break;case"fe":A(e,c,Y);break;default:T(e,c,Y);break}},getRelayUrl:function(Y){return C[Y]},setRelayUrl:function(Z,Y,a){C[Z]=Y;O[Z]=!!a},setAuthToken:function(Y,Z){F[Y]=Z;I(Y)},getRelayChannel:function(){return E},receive:function(Y){if(Y.length>4){M(gadgets.json.parse(decodeURIComponent(Y[Y.length-1])))}}}}();;
