﻿var gadgets=gadgets||{};gadgets.log=function(a){gadgets.log.logAtLevel(gadgets.log.INFO,a);};gadgets.warn=function(a){gadgets.log.logAtLevel(gadgets.log.WARNING,a);};gadgets.error=function(a){gadgets.log.logAtLevel(gadgets.log.ERROR,a);};gadgets.setLogLevel=function(a){gadgets.log.logLevelThreshold_=a;};gadgets.log.logAtLevel=function(c,b){if(c<gadgets.log.logLevelThreshold_||!window.console){return;}var a=window.console.log;if(c==gadgets.log.WARNING&&window.console.warn){a=window.console.warn;}else{if(c==gadgets.log.ERROR&&window.console.error){a=window.console.error;}}a(b);};gadgets.log.INFO=1;gadgets.log.WARNING=2;gadgets.log.ERROR=3;gadgets.log.NONE=4;gadgets.log.logLevelThreshold_=gadgets.log.INFO;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;}};}();if(typeof gadgets.json==="undefined"){gadgets.json=gadgets.json_;}var gadgets=gadgets||{};gadgets.rpctx=gadgets.rpctx||{};gadgets.rpctx.Ifpc=function(){var e=[];var d=0;var c;function b(h){var f=[];for(var k=0,g=h.length;k<g;++k){f.push(encodeURIComponent(gadgets.json_.stringify(h[k])));}return f.join("&");}function a(j){var g;for(var f=e.length-1;f>=0;--f){var k=e[f];try{if(k&&(k.recyclable||k.readyState==="complete")){k.parentNode.removeChild(k);if(window.ActiveXObject){e[f]=k=null;e.splice(f,1);}else{k.recyclable=false;g=k;break;}}}catch(h){}}if(!g){g=document.createElement("iframe");g.style.border=g.style.width=g.style.height="0px";g.style.visibility="hidden";g.style.position="absolute";g.onload=function(){this.recyclable=true;};e.push(g);}g.src=j;setTimeout(function(){document.body.appendChild(g);},0);}return{getCode:function(){return"ifpc";},isParentVerifiable:function(){return true;},init:function(f,g){c=g;c("..",true);return true;},setup:function(g,f){c(g,true);return true;},call:function(f,k,i){var j=gadgets.rpc.getRelayUrl(f);++d;if(!j){gadgets.warn("No relay file assigned for IFPC");return;}var h=null;if(i.l){var g=i.a;h=[j,"#",b([k,d,1,0,b([k,i.s,"","",k].concat(g))])].join("");}else{h=[j,"#",f,"&",k,"@",d,"&1&0&",encodeURIComponent(gadgets.json_.stringify(i))].join("");}a(h);return true;}};}();var gadgets=gadgets||{};gadgets.rpctx=gadgets.rpctx||{};gadgets.rpctx.nix=function(){var c="GRPC____NIXVBS_wrapper";var d="GRPC____NIXVBS_get_wrapper";var f="GRPC____NIXVBS_handle_message";var b="GRPC____NIXVBS_create_channel";var a=2;var j=1000;var i={};var h;var g=0;function e(){var l=i[".."];if(l){return;}if(++g>a){gadgets.warn("Nix transport setup failed, falling back...");h("..",false);return;}if(!l&&window.opener&&"GetAuthToken" in window.opener){l=window.opener;if(l.GetAuthToken()==gadgets.rpc.getAuthToken("..")){var k=gadgets.rpc.getAuthToken("..");l.CreateChannel(window[d]("..",k),k);i[".."]=l;window.opener=null;h("..",true);a=0;return;}}window.setTimeout(function(){e();},j);}return{getCode:function(){return"nix";},isParentVerifiable:function(){return false;},init:function(l,m){h=m;if(typeof window[d]!=="unknown"){window[f]=function(o){window.setTimeout(function(){l(gadgets.json_.parse(o));},0);};window[b]=function(o,q,p){if(gadgets.rpc.getAuthToken(o)===p){i[o]=q;h(o,true);}};var k="Class "+c+"\n Private m_Intended\nPrivate m_Auth\nPublic Sub SetIntendedName(name)\n If isEmpty(m_Intended) Then\nm_Intended = name\nEnd If\nEnd Sub\nPublic Sub SetAuth(auth)\n If isEmpty(m_Auth) Then\nm_Auth = auth\nEnd If\nEnd Sub\nPublic Sub SendMessage(data)\n "+f+"(data)\nEnd Sub\nPublic Function GetAuthToken()\n GetAuthToken = m_Auth\nEnd Function\nPublic Sub CreateChannel(channel, auth)\n Call "+b+"(m_Intended, channel, auth)\nEnd Sub\nEnd Class\nFunction "+d+"(name, auth)\nDim wrap\nSet wrap = New "+c+"\nwrap.SetIntendedName name\nwrap.SetAuth auth\nSet "+d+" = wrap\nEnd Function";try{window.execScript(k,"vbscript");}catch(n){return false;}}return true;},setup:function(o,k){if(o===".."){e();return true;}try{var m=document.getElementById(o);var n=window[d](o,k);m.contentWindow.opener=n;}catch(l){return false;}return true;},call:function(k,n,m){try{if(k===".."&&a>0){g=0;e();}if(i[k]){i[k].SendMessage(gadgets.json_.stringify(m));}else{return false;}}catch(l){return false;}return true;}};}();var gadgets=gadgets||{};gadgets.rpctx=gadgets.rpctx||{};gadgets.rpctx.rmr=function(){var g=500;var e=10;var h={};var b;var i;function k(o,m,n){var p=function(){document.body.appendChild(o);o.src="about:blank";o.src=m+"#"+n;};if(document.body){p();}else{gadgets.util.registerOnLoadHandler(function(){p();});}}function c(o){if(typeof h[o]==="object"){return;}var p=document.createElement("iframe");var m=p.style;m.position="absolute";m.top="0px";m.border="0";m.opacity="0";m.width="10px";m.height="1px";p.id="rmrtransport-"+o;p.name=p.id;var n=gadgets.rpc.getOrigin(gadgets.rpc.getRelayUrl(o))+"/robots.txt";h[o]={frame:p,receiveWindow:null,relayUri:n,searchCounter:0,width:10,waiting:true,queue:[],sendId:0,recvId:0};if(o!==".."){k(p,n,a(o));}d(o);}function d(n){var o=null;h[n].searchCounter++;if(n===".."){o=window.parent.frames["rmrtransport-"+window.name];}else{o=window.frames[n].frames["rmrtransport-.."];}var m=false;if(o){m=f(n,o);}if(!m){if(h[n].searchCounter>e){return;}setTimeout(function(){d(n);},g);}}function j(n,p,t,s){var o=null;if(t!==".."){o=h[".."];}else{o=h[n];}if(o){if(p!==gadgets.rpc.ACK){o.queue.push(s);}if(o.waiting||(o.queue.length===0&&!(p===gadgets.rpc.ACK&&s&&s.ackAlone===true))){return true;}if(o.queue.length>0){o.waiting=true;}var m=o.relayUri+"#"+a(n);try{o.frame.contentWindow.location=m;var q=o.width==10?20:10;o.frame.style.width=q+"px";o.width=q;}catch(r){return false;}}return true;}function a(n){var o=h[n];var m={id:o.sendId};if(o){m.d=Array.prototype.slice.call(o.queue,0);m.d.push({s:gadgets.rpc.ACK,id:o.recvId});}return gadgets.json_.stringify(m);}function l(x){var u=h[x];var q=u.receiveWindow.location.hash.substring(1);var y=gadgets.json_.parse(decodeURIComponent(q))||{};var n=y.d||[];var o=false;var t=false;var v=0;var m=(u.recvId-y.id);for(var p=0;p<n.length;++p){var s=n[p];if(s.s===gadgets.rpc.ACK){i(x,true);if(u.waiting){t=true;}u.waiting=false;var r=Math.max(0,s.id-u.sendId);u.queue.splice(0,r);u.sendId=Math.max(u.sendId,s.id||0);continue;}o=true;if(++v<=m){continue;}++u.recvId;b(s);}if(o||(t&&u.queue.length>0)){var w=(x==="..")?window.name:"..";j(x,gadgets.rpc.ACK,w,{ackAlone:o});}}function f(p,r){var o=h[p];try{var n=false;n="document" in r;if(!n){return false;}n=typeof r.document=="object";if(!n){return false;}var q=r.location.href;if(q==="about:blank"){return false;}}catch(m){return false;}o.receiveWindow=r;r.onresize=function(){l(p);};if(p===".."){k(o.frame,o.relayUri,a(p));}l(p);return true;}return{getCode:function(){return"rmr";},isParentVerifiable:function(){return true;},init:function(m,n){b=m;i=n;return true;},setup:function(o,m){try{c(o);}catch(n){gadgets.warn("Caught exception setting up RMR: "+n);return false;}return true;},call:function(m,o,n){return j(m,n.s,o,n);}};}();var gadgets=gadgets||{};gadgets.rpctx=gadgets.rpctx||{};gadgets.rpctx.wpm=function(){var a;return{getCode:function(){return"wpm";},isParentVerifiable:function(){return true;},init:function(b,d){a=d;var c=function(e){b(gadgets.json_.parse(e.data));};if(!window.addEventListener){window.attachEvent("onmessage",c);}else{window.addEventListener("message",c,false);}a("..",true);return true;},setup:function(c,b){if(c===".."){gadgets.rpc.call(c,gadgets.rpc.ACK);}return true;},call:function(b,f,d){var c=b===".."?parent:window.frames[b];var e=gadgets.rpc.getRelayUrl(b);if(!e){e="http://api.msappspace.com/OpenSocial/rpc_relay.aspx";}if(e){c.postMessage(gadgets.json_.stringify(d),"*");}else{gadgets.error("No relay set, cannot send cross-domain message");}return true;}};}();var gadgets=gadgets||{};gadgets.rpctx=gadgets.rpctx||{};gadgets.rpctx.frameElement=function(){var e="__g2c_rpc";var b="__c2g_rpc";var d;var c;function a(g,k,j){try{if(k!==".."){var f=window.frameElement;if(typeof f[e]==="function"){if(typeof f[e][b]!=="function"){f[e][b]=function(l){d(gadgets.json_.parse(l));};}f[e](gadgets.json_.stringify(j));return true;}else{return false;}}else{var i=document.getElementById(g);if(typeof i[e]==="function"&&typeof i[e][b]==="function"){i[e][b](gadgets.json_.stringify(j));return true;}else{return false;}}}catch(h){return false;}return true;}return{getCode:function(){return"fe";},isParentVerifiable:function(){return false;},init:function(f,g){d=f;c=g;return true;},setup:function(j,f){if(j!==".."){try{var i=document.getElementById(j);i[e]=function(k){d(gadgets.json_.parse(k));};}catch(h){return false;}}if(j===".."){c("..",true);var g=function(){window.setTimeout(function(){gadgets.rpc.call(j,gadgets.rpc.ACK);},500);};gadgets.util.registerOnLoadHandler(g);}return true;},call:function(f,h,g){return a(f,h,g);}};}();var gadgets=gadgets||{};gadgets.rpc=function(){var p="__cb";var n="";var f="__ack";var m=500;var h=10;var b={};var c={};var t={};var i={};var k=0;var C={};var s={};var d={};var A={};var j={};var r={};var u=(window.top!==window.self);var B=gadgets.rpctx.Ifpc;if(gadgets.util){A=gadgets.util.getUrlParameters();}i[".."]=A.rpctoken||A.ifpctok||0;var v=(A.rpc_earlyq==="1");function a(){return typeof window.postMessage==="function"?gadgets.rpctx.wpm:window.ActiveXObject?gadgets.rpctx.nix:gadgets.rpctx.Ifpc;}function g(){return typeof window.postMessage==="function"?"wpm":window.ActiveXObject?"nix":navigator.userAgent.indexOf("WebKit")>0?"RMR":navigator.product==="Gecko"?"FrameElement":"IFPC";}function x(I,G){var E=y;if(!G){E=B;}j[I]=E;var D=r[I]||[];for(var F=0;F<D.length;++F){var H=D[F];H.t=gadgets.rpc.getAuthToken(I);E.call(I,H.f,H);}r[I]=[];}function q(E){if(E&&typeof E.s==="string"&&typeof E.f==="string"&&E.a instanceof Array){if(typeof i[E.f]!=="undefined"){if(i[E.f]!=E.t){throw new Error("Invalid auth token. "+i[E.f]+" vs "+E.t);}}if(E.s===f){window.setTimeout(function(){x(E.f,true);},0);return;}if(E.c){E.callback=function(F){gadgets.rpc.call(E.f,p,null,E.c,F);};}var D=(b[E.s]||b[n]).apply(E,E.a);if(E.c&&typeof D!=="undefined"){gadgets.rpc.call(E.f,p,null,[E.c,D]);}}}function z(F){if(!F){return"";}F=F.toLowerCase();if(F.indexOf("//")==0){F=window.location.protocol+":"+F;}if(F.indexOf("http://")!=0&&F.indexOf("https://")!=0){F=window.location.protocol+"://"+F;}var G=F.substring(F.indexOf("://")+3);var D=G.indexOf("/");if(D!=-1){G=G.substring(0,D);}var I=F.substring(0,F.indexOf("://"));var H="";var J=G.indexOf(":");if(J!=-1){var E=G.substring(J+1);G=G.substring(0,J);if((I==="http"&&E!=="80")||(I==="https"&&E!=="443")){H=":"+E;}}return I+"://"+G+H;}var y=a();b[n]=function(){gadgets.warn("Unknown RPC service: "+this.s);};b[p]=function(E,D){var F=C[E];if(F){delete C[E];F(D);}};function l(F,D){if(s[F]===true){return;}if(typeof s[F]==="undefined"){s[F]=0;}var E=document.getElementById(F);if(F===".."||E!=null){if(y.setup(F,D)===true){s[F]=true;return;}}if(s[F]!==true&&s[F]++<h){window.setTimeout(function(){l(F,D);},m);}else{y=B;s[F]=true;}}function e(E,H){if(typeof d[E]==="undefined"){d[E]=false;var G=gadgets.rpc.getRelayUrl(E);if(z(G)!==z(window.location.href)){return false;}var F=null;if(E===".."){F=parent;}else{F=frames[E];}try{d[E]=F.gadgets.rpc.receiveSameDomain;}catch(D){gadgets.error("Same domain call failed: parent= incorrectly set.");}}if(typeof d[E]==="function"){d[E](H);return true;}return false;}if(u&&gadgets.config){function w(E){var G=E?E.rpc:{};var D=G.parentRelayUrl;if(D.substring(0,7)!=="http://"&&D.substring(0,8)!=="https://"&&D.substring(0,2)!=="//"){if(A.parent!==""){D=z(A.parent)+D;}}c[".."]=D;var F=!!G.useLegacyProtocol;t[".."]=F;if(F){y=gadgets.rpctx.Ifpc;y.init(q,x);}if(y.setup("..")===false){y=B;}}var o={parentRelayUrl:gadgets.config.NonEmptyStringValidator};gadgets.config.register("rpc",o,w);}return{register:function(E,D){if(E===p||E===f){throw new Error("Cannot overwrite callback/ack service");}if(E===n){throw new Error("Cannot overwrite default service: use registerDefault");}b[E]=D;},unregister:function(D){if(D===p||D===f){throw new Error("Cannot delete callback/ack service");}if(D===n){throw new Error("Cannot delete default service: use unregisterDefault");}delete b[D];},registerDefault:function(D){b[n]=D;},unregisterDefault:function(){delete b[n];},forceParentVerifiable:function(){if(!y.isParentVerifiable()){y=gadgets.rpctx.Ifpc;}},forceIfpc:function(){y=gadgets.rpctx.Ifpc;},call:function(D,F,E,K,I){D=D||"..";var J="..";if(D===".."){J=window.name;}++k;if(K){C[k]=K;}var H={s:E,f:J,c:K?k:0,a:I,t:i[D],l:t[D],r:F};var G=v?j[D]:y;if(!G){if(!r[D]){r[D]=[H];}else{r[D].push(H);}return;}if(t[D]){G=gadgets.rpctx.Ifpc;}if(G.call(D,J,H)===false){B.call(D,J,H);}},getRelayUrl:function(E){var D=c[E];if(D&&D.indexOf("//")==0){D=document.location.protocol+D;}return D;},setRelayUrl:function(E,D,F){c[E]=D;t[E]=!!F;},setAuthToken:function(D,E){E=E||"";i[D]=String(E);l(D,E);},getAuthToken:function(D){return i[D];},getRelayChannel:function(){return y.getCode();},receive:function(D){if(D.length>4){q(gadgets.json_.parse(decodeURIComponent(D[D.length-1])));}},receiveSameDomain:function(D){D.a=Array.prototype.slice.call(D.a);window.setTimeout(function(){q(D);},0);},getOrigin:z,init:function(){if(y.init(q,x)===false){y=B;}},ACK:f};}();gadgets.rpc.init();gadgets.IFPCSHIM={call:function(a,c,f,d,g,b,e){gadgets.rpc.call("..",b,c,g,f);},registerService:function(b,a){gadgets.rpc.register(b,a);},handleRequest:function(a){gadgets.rpc.receive(a);}};var _IFPC=gadgets.IFPCSHIM;gadgets.IFPC_=_IFPC;gadgets.rpc.setAuthToken("..","0");