var gadgets={};;
var gadgets=gadgets||{};
gadgets.config=function(){var A=[];
return{register:function(D,C,B){var E=A[D];
if(!E){E=[];
A[D]=E
}E.push({validators:C||{},callback:B})
},get:function(B){if(B){return configuration[B]||{}
}return configuration
},init:function(D,K){configuration=D;
for(var B in A){if(A.hasOwnProperty(B)){var C=A[B],H=D[B];
for(var G=0,F=C.length;
G<F;
++G){var I=C[G];
if(H&&!K){var E=I.validators;
for(var J in E){if(E.hasOwnProperty(J)){if(!E[J](H[J])){throw new Error('Invalid config value "'+H[J]+'" for parameter "'+J+'" in component "'+B+'"')
}}}}if(I.callback){I.callback(D)
}}}}},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 css={'properties':(function(){var c=[/^\s*inherit\s+$/i,/^\s*(?:#(?:[0-9a-f]{3}){1,2}|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|purple|red|silver|teal|white|yellow|transparent|inherit)\s+$/i,/^\s*(?:none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset|inherit)\s+$/i,/^\s*(?:thin|medium|thick|0|[+-]?\d+(?:\.\d+)?(?:em|ex|px|in|cm|mm|pt|pc)|inherit)\s+$/i,/^\s*(?:none|inherit)\s+$/i,/^\s*(?:url\("[^\(\)\\\"\r\n]+"\)|none|inherit)\s+$/i,/^\s*(?:0|[+-]?\d+(?:\.\d+)?(?:em|ex|px|in|cm|mm|pt|pc)|0|(?:\d+(?:\.\d+)?)%|auto|inherit)\s+$/i,/^\s*(?:0|(?:\d+(?:\.\d+)?)(?:em|ex|px|in|cm|mm|pt|pc)|0|[+-]?\d+(?:\.\d+)?%|none|inherit)\s+$/i,/^\s*(?:0|(?:\d+(?:\.\d+)?)(?:em|ex|px|in|cm|mm|pt|pc)|0|[+-]?\d+(?:\.\d+)?%|inherit)\s+$/i,/^\s*(?:auto|always|avoid|left|right|inherit)\s+$/i,/^\s*(?:0|[+-]?\d+(?:\.\d+)?m?s|0|(?:\d+(?:\.\d+)?)%|inherit)\s+$/i,/^\s*(?:0|[+-]?\d+(?:\.\d+)?|inherit)\s+$/i,/^\s*(?:normal|0|(?:\d+(?:\.\d+)?)(?:em|ex|px|in|cm|mm|pt|pc)|inherit)\s+$/i];return{'azimuth':/^\s*(?:0|[+-]?\d+(?:\.\d+)?(?:deg|g?rad)|leftwards|rightwards|inherit)\s+$/i,'background':c[0],'background-attachment':/^\s*(?:scroll|fixed|inherit)\s+$/i,'background-color':c[1],'background-image':c[5],'background-position':/^\s*(?:(?:0|(?:\d+(?:\.\d+)?)%|0|[+-]?\d+(?:\.\d+)?(?:em|ex|px|in|cm|mm|pt|pc)|left|center|right)\s+(?:(?:0|(?:\d+(?:\.\d+)?)%|0|[+-]?\d+(?:\.\d+)?(?:em|ex|px|in|cm|mm|pt|pc)|top|center|bottom)\s+)?|inherit\s+)$/i,'background-repeat':/^\s*(?:repeat|repeat-x|repeat-y|no-repeat|inherit)\s+$/i,'border':c[0],'border-bottom':c[0],'border-bottom-color':c[1],'border-bottom-style':c[2],'border-bottom-width':c[3],'border-collapse':/^\s*(?:collapse|separate|inherit)\s+$/i,'border-color':/^\s*(?:(?:(?:#(?:[0-9a-f]{3}){1,2}|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|purple|red|silver|teal|white|yellow|transparent)\s+){1,4}|inherit\s+)$/i,'border-left':c[0],'border-left-color':c[1],'border-left-style':c[2],'border-left-width':c[3],'border-radius':/^\s*0|[+-]?\d+(?:\.\d+)?(?:em|ex|px|in|cm|mm|pt|pc)\s+(?:0|[+-]?\d+(?:\.\d+)?(?:em|ex|px|in|cm|mm|pt|pc)\s+)?$/i,'border-right':c[0],'border-right-color':c[1],'border-right-style':c[2],'border-right-width':c[3],'border-spacing':/^\s*(?:0|[+-]?\d+(?:\.\d+)?(?:em|ex|px|in|cm|mm|pt|pc)\s+(?:0|[+-]?\d+(?:\.\d+)?(?:em|ex|px|in|cm|mm|pt|pc)\s+)?|inherit\s+)$/i,'border-style':/^\s*(?:(?:(?:none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset)\s+){1,4}|inherit\s+)$/i,'border-top':c[0],'border-top-color':c[1],'border-top-style':c[2],'border-top-width':c[3],'border-width':/^\s*(?:(?:(?:thin|medium|thick|0|[+-]?\d+(?:\.\d+)?(?:em|ex|px|in|cm|mm|pt|pc))\s+){1,4}|inherit\s+)$/i,'bottom':c[6],'caption-side':/^\s*(?:top|bottom|inherit)\s+$/i,'clear':/^\s*(?:none|left|right|both|inherit)\s+$/i,'clip':/^\s*(?:auto|inherit)\s+$/i,'color':/^\s*(?:#(?:[0-9a-f]{3}){1,2}|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|purple|red|silver|teal|white|yellow|inherit)\s+$/i,'counter-increment':c[4],'counter-reset':c[4],'cue':c[0],'cue-after':c[5],'cue-before':c[5],'cursor':/^\s*(?:(?:url\("[^\(\)\\\"\r\n]+"\)\s+,\s+)*(?:auto|crosshair|default|pointer|move|e-resize|ne-resize|nw-resize|n-resize|se-resize|sw-resize|s-resize|w-resize|text|wait|help|progress|all-scroll|col-resize|hand|no-drop|not-allowed|row-resize|vertical-text)|inherit)\s+$/i,'direction':/^\s*(?:ltr|rtl|inherit)\s+$/i,'display':/^\s*(?:inline|block|list-item|run-in|inline-block|table|inline-table|table-row-group|table-header-group|table-footer-group|table-row|table-column-group|table-column|table-cell|table-caption|none|inherit)\s+$/i,'elevation':/^\s*(?:0|[+-]?\d+(?:\.\d+)?(?:deg|g?rad)|below|level|above|higher|lower|inherit)\s+$/i,'empty-cells':/^\s*(?:show|hide|inherit)\s+$/i,'float':/^\s*(?:left|right|none|inherit)\s+$/i,'font':/^\s*(?:caption|icon|menu|message-box|small-caption|status-bar|inherit)\s+$/i,'font-family':/^\s*(?:(?:"\w(?:[\w-]*\w)(?:\s+\w([\w-]*\w))*"|serif|sans-serif|cursive|fantasy|monospace)\s+(?:,\s+(?:"\w(?:[\w-]*\w)(?:\s+\w([\w-]*\w))*"|serif|sans-serif|cursive|fantasy|monospace)\s+)*|inherit\s+)$/i,'font-size':/^\s*(?:xx-small|x-small|small|medium|large|x-large|xx-large|(?:small|larg)er|0|(?:\d+(?:\.\d+)?)(?:em|ex|px|in|cm|mm|pt|pc)|0|[+-]?\d+(?:\.\d+)?%|inherit)\s+$/i,'font-style':/^\s*(?:normal|italic|oblique|inherit)\s+$/i,'font-variant':/^\s*(?:normal|small-caps|inherit)\s+$/i,'font-weight':/^\s*(?:normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit)\s+$/i,'height':c[6],'left':c[6],'letter-spacing':c[12],'line-height':/^\s*(?:normal|0|(?:\d+(?:\.\d+)?)|0|(?:\d+(?:\.\d+)?)(?:em|ex|px|in|cm|mm|pt|pc)|0|[+-]?\d+(?:\.\d+)?%|inherit)\s+$/i,'list-style':c[0],'list-style-image':c[5],'list-style-position':/^\s*(?:inside|outside|inherit)\s+$/i,'list-style-type':/^\s*(?:disc|circle|square|decimal|decimal-leading-zero|lower-roman|upper-roman|lower-greek|lower-latin|upper-latin|armenian|georgian|lower-alpha|upper-alpha|none|inherit)\s+$/i,'margin':/^\s*(?:(?:(?:0|[+-]?\d+(?:\.\d+)?(?:em|ex|px|in|cm|mm|pt|pc)|0|(?:\d+(?:\.\d+)?)%|auto)\s+){1,4}|inherit\s+)$/i,'margin-bottom':c[6],'margin-left':c[6],'margin-right':c[6],'margin-top':c[6],'max-height':c[7],'max-width':c[7],'min-height':c[8],'min-width':c[8],'opacity':/^\s*(?:(?:0(?:\.[0-9]+)?|\.[0-9]+|1(?:\.0+)?)|inherit)\s+$/i,'outline':c[0],'outline-color':/^\s*(?:#(?:[0-9a-f]{3}){1,2}|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|purple|red|silver|teal|white|yellow|invert|inherit)\s+$/i,'outline-style':c[2],'outline-width':c[3],'overflow':/^\s*(?:visible|hidden|scroll|auto|inherit)\s+$/i,'padding':/^\s*(?:(?:(?:0|(?:\d+(?:\.\d+)?)(?:em|ex|px|in|cm|mm|pt|pc)|0|[+-]?\d+(?:\.\d+)?%)\s+){1,4}|inherit\s+)$/i,'padding-bottom':c[8],'padding-left':c[8],'padding-right':c[8],'padding-top':c[8],'page-break-after':c[9],'page-break-before':c[9],'page-break-inside':/^\s*(?:avoid|auto|inherit)\s+$/i,'pause':/^\s*(?:(?:(?:0|[+-]?\d+(?:\.\d+)?m?s|0|(?:\d+(?:\.\d+)?)%)\s+){1,2}|inherit\s+)$/i,'pause-after':c[10],'pause-before':c[10],'pitch':/^\s*(?:0|(?:\d+(?:\.\d+)?)k?Hz|x-low|low|medium|high|x-high|inherit)\s+$/i,'pitch-range':c[11],'play-during':/^\s*(?:auto|none|inherit)\s+$/i,'position':/^\s*(?:static|relative|absolute|fixed|inherit)\s+$/i,'quotes':c[4],'richness':c[11],'right':c[6],'speak':/^\s*(?:normal|none|spell-out|inherit)\s+$/i,'speak-header':/^\s*(?:once|always|inherit)\s+$/i,'speak-numeral':/^\s*(?:digits|continuous|inherit)\s+$/i,'speak-punctuation':/^\s*(?:code|none|inherit)\s+$/i,'speech-rate':/^\s*(?:0|[+-]?\d+(?:\.\d+)?|x-slow|slow|medium|fast|x-fast|faster|slower|inherit)\s+$/i,'stress':c[11],'table-layout':/^\s*(?:auto|fixed|inherit)\s+$/i,'text-align':/^\s*(?:left|right|center|justify|inherit)\s+$/i,'text-decoration':c[4],'text-indent':/^\s*(?:0|[+-]?\d+(?:\.\d+)?(?:em|ex|px|in|cm|mm|pt|pc)|0|(?:\d+(?:\.\d+)?)%|inherit)\s+$/i,'text-transform':/^\s*(?:capitalize|uppercase|lowercase|none|inherit)\s+$/i,'text-wrap':/^\s*(?:normal|unrestricted|none|suppress)\s+$/i,'top':c[6],'unicode-bidi':/^\s*(?:normal|embed|bidi-override|inherit)\s+$/i,'vertical-align':/^\s*(?:baseline|sub|super|top|text-top|middle|bottom|text-bottom|0|(?:\d+(?:\.\d+)?)%|0|[+-]?\d+(?:\.\d+)?(?:em|ex|px|in|cm|mm|pt|pc)|inherit)\s+$/i,'visibility':/^\s*(?:visible|hidden|collapse|inherit)\s+$/i,'voice-family':/^\s*(?:(?:(?:"\w(?:[\w-]*\w)(?:\s+\w([\w-]*\w))*"|male|female|child)\s+,\s+)*(?:"\w(?:[\w-]*\w)(?:\s+\w([\w-]*\w))*"|male|female|child)|inherit)\s+$/i,'volume':/^\s*(?:0|(?:\d+(?:\.\d+)?)|0|[+-]?\d+(?:\.\d+)?%|silent|x-soft|soft|medium|loud|x-loud|inherit)\s+$/i,'white-space':/^\s*(?:normal|pre|nowrap|pre-wrap|pre-line|inherit)\s+$/i,'width':/^\s*(?:0|(?:\d+(?:\.\d+)?)(?:em|ex|px|in|cm|mm|pt|pc)|0|[+-]?\d+(?:\.\d+)?%|auto|inherit)\s+$/i,'word-spacing':c[12],'word-wrap':/^\s*(?:normal|break-word)\s+$/i,'z-index':/^\s*(?:auto|\d+|inherit)\s+$/i,'zoom':/^\s*(?:normal|0|(?:\d+(?:\.\d+)?)|0|[+-]?\d+(?:\.\d+)?%)\s+$/i};})(),'alternates':{'float':['cssFloat','styleFloat']}};}{var
html4={};html4 .atype={'NONE':0,'URI':1,'SCRIPT':2,'STYLE':3,'ID':4,'IDREF':5,'IDREFS':6,'GLOBAL_NAME':7,'LOCAL_NAME':8,'CLASSES':9,'FRAME_TARGET':10};html4
.ATTRIBS={'*:class':9,'*:dir':0,'*:id':4,'*:lang':0,'*:onclick':2,'*:ondblclick':2,'*:onkeydown':2,'*:onkeypress':2,'*:onkeyup':2,'*:onmousedown':2,'*:onmousemove':2,'*:onmouseout':2,'*:onmouseover':2,'*:onmouseup':2,'*:style':3,'*:title':0,'a:accesskey':0,'a:coords':0,'a:href':1,'a:hreflang':0,'a:name':7,'a:onblur':2,'a:onfocus':2,'a:rel':0,'a:rev':0,'a:shape':0,'a:tabindex':0,'a:target':10,'a:type':0,'area:accesskey':0,'area:alt':0,'area:coords':0,'area:href':1,'area:nohref':0,'area:onblur':2,'area:onfocus':2,'area:shape':0,'area:tabindex':0,'area:target':10,'bdo:dir':0,'blockquote:cite':1,'br:clear':0,'button:accesskey':0,'button:disabled':0,'button:name':8,'button:onblur':2,'button:onfocus':2,'button:tabindex':0,'button:type':0,'button:value':0,'caption:align':0,'col:align':0,'col:char':0,'col:charoff':0,'col:span':0,'col:valign':0,'col:width':0,'colgroup:align':0,'colgroup:char':0,'colgroup:charoff':0,'colgroup:span':0,'colgroup:valign':0,'colgroup:width':0,'del:cite':1,'del:datetime':0,'dir:compact':0,'div:align':0,'dl:compact':0,'font:color':0,'font:face':0,'font:size':0,'form:accept':0,'form:action':1,'form:enctype':0,'form:method':0,'form:name':7,'form:onreset':2,'form:onsubmit':2,'form:target':10,'h1:align':0,'h2:align':0,'h3:align':0,'h4:align':0,'h5:align':0,'h6:align':0,'hr:align':0,'hr:noshade':0,'hr:size':0,'hr:width':0,'img:align':0,'img:alt':0,'img:border':0,'img:height':0,'img:hspace':0,'img:ismap':0,'img:longdesc':1,'img:name':7,'img:src':1,'img:usemap':0,'img:vspace':0,'img:width':0,'input:accept':0,'input:accesskey':0,'input:align':0,'input:alt':0,'input:checked':0,'input:disabled':0,'input:ismap':0,'input:maxlength':0,'input:name':8,'input:onblur':2,'input:onchange':2,'input:onfocus':2,'input:onselect':2,'input:readonly':0,'input:size':0,'input:src':1,'input:tabindex':0,'input:type':0,'input:usemap':0,'input:value':0,'ins:cite':1,'ins:datetime':0,'label:accesskey':0,'label:for':5,'label:onblur':2,'label:onfocus':2,'legend:accesskey':0,'legend:align':0,'li:type':0,'li:value':0,'map:name':7,'menu:compact':0,'ol:compact':0,'ol:start':0,'ol:type':0,'optgroup:disabled':0,'optgroup:label':0,'option:disabled':0,'option:label':0,'option:selected':0,'option:value':0,'p:align':0,'pre:width':0,'q:cite':1,'select:disabled':0,'select:multiple':0,'select:name':8,'select:onblur':2,'select:onchange':2,'select:onfocus':2,'select:size':0,'select:tabindex':0,'table:align':0,'table:bgcolor':0,'table:border':0,'table:cellpadding':0,'table:cellspacing':0,'table:frame':0,'table:rules':0,'table:summary':0,'table:width':0,'tbody:align':0,'tbody:char':0,'tbody:charoff':0,'tbody:valign':0,'td:abbr':0,'td:align':0,'td:axis':0,'td:bgcolor':0,'td:char':0,'td:charoff':0,'td:colspan':0,'td:headers':6,'td:height':0,'td:nowrap':0,'td:rowspan':0,'td:scope':0,'td:valign':0,'td:width':0,'textarea:accesskey':0,'textarea:cols':0,'textarea:disabled':0,'textarea:name':8,'textarea:onblur':2,'textarea:onchange':2,'textarea:onfocus':2,'textarea:onselect':2,'textarea:readonly':0,'textarea:rows':0,'textarea:tabindex':0,'tfoot:align':0,'tfoot:char':0,'tfoot:charoff':0,'tfoot:valign':0,'th:abbr':0,'th:align':0,'th:axis':0,'th:bgcolor':0,'th:char':0,'th:charoff':0,'th:colspan':0,'th:headers':6,'th:height':0,'th:nowrap':0,'th:rowspan':0,'th:scope':0,'th:valign':0,'th:width':0,'thead:align':0,'thead:char':0,'thead:charoff':0,'thead:valign':0,'tr:align':0,'tr:bgcolor':0,'tr:char':0,'tr:charoff':0,'tr:valign':0,'ul:compact':0,'ul:type':0};html4
.eflags={'OPTIONAL_ENDTAG':1,'EMPTY':2,'CDATA':4,'RCDATA':8,'UNSAFE':16,'FOLDABLE':32};html4
.ELEMENTS={'a':0,'abbr':0,'acronym':0,'address':0,'applet':16,'area':2,'b':0,'base':18,'basefont':18,'bdo':0,'big':0,'blockquote':0,'body':49,'br':2,'button':0,'caption':0,'center':0,'cite':0,'code':0,'col':2,'colgroup':1,'dd':1,'del':0,'dfn':0,'dir':0,'div':0,'dl':0,'dt':1,'em':0,'fieldset':0,'font':0,'form':0,'frame':18,'frameset':16,'h1':0,'h2':0,'h3':0,'h4':0,'h5':0,'h6':0,'head':49,'hr':2,'html':49,'i':0,'iframe':20,'img':2,'input':2,'ins':0,'isindex':18,'kbd':0,'label':0,'legend':0,'li':1,'link':18,'map':0,'menu':0,'meta':18,'noframes':20,'noscript':20,'object':16,'ol':0,'optgroup':0,'option':1,'p':1,'param':18,'pre':0,'q':0,'s':0,'samp':0,'script':20,'select':0,'small':0,'span':0,'strike':0,'strong':0,'style':20,'sub':0,'sup':0,'table':0,'tbody':1,'td':1,'textarea':8,'tfoot':1,'th':1,'thead':1,'title':24,'tr':1,'tt':0,'u':0,'ul':0,'var':0};}{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':'\xa0','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,'&quot;').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=false;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;}}}else{value=null;}attribs[i+1]=value;}return attribs;})(htmlText,out);return out.join('');}}};
var gadgets=gadgets||{};
gadgets.util=function(){function G(){var L;
var K=document.location.href;
var I=K.indexOf("?");
var J=K.indexOf("#");
if(J===-1){L=K.substr(I+1)
}else{L=[K.substr(I+1,J-I-1),"&",K.substr(J+1)].join("")
}return L.split("&")
}var E=null;
var D={};
var C={};
var F=[];
var A={0:false,10:true,13:true,34:true,39:true,60:true,62:true,92:true,8232:true,8233:true};
function B(I,J){return String.fromCharCode(J)
}function H(I){D=I["core.util"]||{}
}if(gadgets.config){gadgets.config.register("core.util",null,H)
}return{getUrlParameters:function(){if(E!==null){return E
}E={};
var L=G();
var O=window.decodeURIComponent?decodeURIComponent:unescape;
for(var J=0,I=L.length;
J<I;
++J){var N=L[J].indexOf("=");
if(N===-1){continue
}var M=L[J].substring(0,N);
var K=L[J].substring(N+1);
K=K.replace(/\+/g," ");
E[M]=O(K)
}return E
},makeClosure:function(L,N,M){var K=[];
for(var J=2,I=arguments.length;
J<I;
++J){K.push(arguments[J])
}return function(){var O=K.slice();
for(var Q=0,P=arguments.length;
Q<P;
++Q){O.push(arguments[Q])
}return N.apply(L,O)
}
},makeEnum:function(J){var L={};
for(var K=0,I;
(I=J[K]);
++K){L[I]=I
}return L
},getFeatureParameters:function(I){return typeof D[I]==="undefined"?null:D[I]
},hasFeature:function(I){return typeof D[I]!=="undefined"
},getServices:function(){return C
},registerOnLoadHandler:function(I){F.push(I)
},runOnLoadHandlers:function(){for(var J=0,I=F.length;
J<I;
++J){F[J]()
}},escape:function(I,M){if(!I){return I
}else{if(typeof I==="string"){return gadgets.util.escapeString(I)
}else{if(typeof I==="array"){for(var L=0,J=I.length;
L<J;
++L){I[L]=gadgets.util.escape(I[L])
}}else{if(typeof I==="object"&&M){var K={};
for(var N in I){if(I.hasOwnProperty(N)){K[gadgets.util.escapeString(N)]=gadgets.util.escape(I[N],true)
}}return K
}}}}return I
},escapeString:function(M){var J=[],L,N;
for(var K=0,I=M.length;
K<I;
++K){L=M.charCodeAt(K);
N=A[L];
if(N===true){J.push("&#",L,";")
}else{if(N!==false){J.push(M.charAt(K))
}}}return J.join("")
},unescapeString:function(I){return I.replace(/&#([0-9]+);/g,B)
}}
}();
gadgets.util.getUrlParameters();;
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||{};
(function(){var I=null;
var J={};
var F=gadgets.util.escapeString;
var D={};
var H={};
var E="en";
var B="US";
var A=0;
function C(){var L=gadgets.util.getUrlParameters();
for(var K in L){if(L.hasOwnProperty(K)){if(K.indexOf("up_")===0&&K.length>3){J[K.substr(3)]=String(L[K])
}else{if(K==="country"){B=L[K]
}else{if(K==="lang"){E=L[K]
}else{if(K==="mid"){A=L[K]
}}}}}}}function G(){for(var K in H){if(typeof J[K]==="undefined"){J[K]=H[K]
}}}gadgets.Prefs=function(){if(!I){C();
G();
I=this
}return I
};
gadgets.Prefs.setInternal_=function(L,M){if(typeof L==="string"){J[L]=M
}else{for(var K in L){if(L.hasOwnProperty(K)){J[K]=L[K]
}}}};
gadgets.Prefs.setMessages_=function(K){D=K
};
gadgets.Prefs.setDefaultPrefs_=function(K){H=K
};
gadgets.Prefs.prototype.getString=function(K){return J[K]?F(J[K]):""
};
gadgets.Prefs.prototype.setDontEscape_=function(){F=function(K){return K
}
};
gadgets.Prefs.prototype.getInt=function(K){var L=parseInt(J[K],10);
return isNaN(L)?0:L
};
gadgets.Prefs.prototype.getFloat=function(K){var L=parseFloat(J[K]);
return isNaN(L)?0:L
};
gadgets.Prefs.prototype.getBool=function(K){var L=J[K];
if(L){return L==="true"||L===true||!!parseInt(L,10)
}return false
};
gadgets.Prefs.prototype.set=function(K,L){throw new Error("setprefs feature required to make this call.")
};
gadgets.Prefs.prototype.getArray=function(N){var O=J[N];
if(O){var K=O.split("|");
for(var M=0,L=K.length;
M<L;
++M){K[M]=F(K[M].replace(/%7C/g,"|"))
}return K
}return[]
};
gadgets.Prefs.prototype.setArray=function(K,L){throw new Error("setprefs feature required to make this call.")
};
gadgets.Prefs.prototype.getMsg=function(K){return D[K]||""
};
gadgets.Prefs.prototype.getCountry=function(){return B
};
gadgets.Prefs.prototype.getLang=function(){return E
};
gadgets.Prefs.prototype.getModuleId=function(){return A
}
})();;
var gadgets=gadgets||{};
if(window.JSON){gadgets.json={parse:function(B){try{return window.JSON.parse(B)
}catch(A){return false
}},stringify:function(B){try{return window.JSON.stringify(B)
}catch(A){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(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=window.JSON||gadgets.json;
var _IG_Prefs=(function(){var A=null;
var B=function(){if(!A){A=new gadgets.Prefs();
A.setDontEscape_()
}return A
};
B._parseURL=gadgets.Prefs.parseUrl;
return B
})();
function _IG_Fetch_wrapper(B,A){B(A.data?A.data:"")
}function _IG_FetchContent(B,G,C){var F=C||{};
if(F.refreshInterval){F.REFRESH_INTERVAL=F.refreshInterval
}else{F.REFRESH_INTERVAL=3600
}for(var E in F){var D=F[E];
delete F[E];
F[E.toUpperCase()]=D
}var A=gadgets.util.makeClosure(null,_IG_Fetch_wrapper,G);
gadgets.io.makeRequest(B,A,F)
}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(I){I.data=I.data||{};
if(I.errors&&I.errors.length>0){I.data.ErrorMsg=I.errors[0]
}if(I.data.link){I.data.URL=B
}if(I.data.title){I.data.Title=I.data.title
}if(I.data.description){I.data.Description=I.data.description
}if(I.data.link){I.data.Link=I.data.link
}if(I.data.items&&I.data.items.length>0){I.data.Entry=I.data.items;
for(var G=0;
G<I.data.Entry.length;
++G){var H=I.data.Entry[G];
H.Title=H.title;
H.Link=H.link;
H.Summary=H.summary||H.description;
H.Date=H.pubDate
}}F(I.data)
},E)
}function _IG_GetCachedUrl(A,B){var C={REFRESH_INTERVAL:3600};
if(B&&B.refreshInterval){C.REFRESH_INTERVAL=B.refreshInterval
}return gadgets.io.getProxyUrl(A,C)
}function _IG_GetImageUrl(A,B){return _IG_GetCachedUrl(A,B)
}function _IG_GetImage(B){var A=document.createElement("img");
A.src=_IG_GetCachedUrl(B);
return 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,C){var I=window;
var F=A.split(".");
for(var H=0,G=F.length;
H<G;
H++){var B=F[H];
I[B]=I[B]||{};
I=I[B]
}for(var E=0,D=C.length;
E<D;
E+=2){I[C[E]]=C[E+1]
}};;
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.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
}try{if(xobj.status!==200){callback({errors:["Error "+xobj.status]});
return true
}}catch(e){callback({errors:["Error not specified"]});
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,headers:data.headers,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();
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({errors:["Error "+preload.rc]})
}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"){paramData.oauthState=oauthState||"";
for(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();
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))
}}
}();
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"]);
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 R="__cb";
var P="";
var d="__g2c_rpc";
var F="__c2g_rpc";
var H="GRPC____NIXVBS_wrapper";
var B="GRPC____NIXVBS_get_wrapper";
var Y="GRPC____NIXVBS_handle_message";
var O="GRPC____NIXVBS_create_channel";
var J={};
var C={};
var W=[];
var D={};
var U={};
var K={};
var M=0;
var e={};
var T={};
var E={};
var c={};
var I;
if(gadgets.util){c=gadgets.util.getUrlParameters()
}K[".."]=c.rpctoken||c.ifpctok||0;
function Z(){return typeof window.postMessage==="function"?"wpm":typeof document.postMessage==="function"?"dpm":window.ActiveXObject?"nix":navigator.product==="Gecko"?"fe":"ifpc"
}I=Z();
function S(h){if(h&&typeof h.s==="string"&&typeof h.f==="string"&&h.a instanceof Array){if(K[h.f]){if(K[h.f]!==h.t){throw new Error("Invalid auth token. "+K[h.f]+" vs "+h.t)
}}if(h.c){h.callback=function(i){gadgets.rpc.call(h.f,R,null,h.c,i)
}
}var g=(C[h.s]||C[P]).apply(h,h.a);
if(h.c&&typeof g!=="undefined"){gadgets.rpc.call(h.f,R,null,h.c,g)
}}}function b(){if(I==="dpm"||I==="wpm"){window.addEventListener("message",function(i){S(gadgets.json.parse(i.data))
},false)
}if(I==="nix"){if(typeof window[B]!=="unknown"){window[Y]=function(i){window.setTimeout(function(){S(gadgets.json.parse(i))
},0)
};
window[O]=function(i,k,j){if(K[i]===j){J[i]=k
}};
var g="Class "+H+"\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 "+Y+"(data)\nEnd Sub\nPublic Function GetAuthToken()\n GetAuthToken = m_Auth\nEnd Function\nPublic Sub CreateChannel(channel, auth)\n Call "+O+"(m_Intended, channel, auth)\nEnd Sub\nEnd Class\nFunction "+B+"(name, auth)\nDim wrap\nSet wrap = New "+H+"\nwrap.SetIntendedName name\nwrap.SetAuth auth\nSet "+B+" = wrap\nEnd Function";
try{window.execScript(g,"vbscript")
}catch(h){I="ifpc"
}}}}b();
C[P]=function(){if(window.console&&window.console["log"]){window.console["log"]("Unknown RPC service: "+this.s)
}};
C[R]=function(h,g){var i=e[h];
if(i){delete e[h];
i(g)
}};
function N(h,g){var k;
if(T[h]){return 
}if(I==="fe"){try{k=document.getElementById(h);
k[d]=function(m){S(gadgets.json.parse(m))
}
}catch(j){}}if(I==="nix"){try{k=document.getElementById(h);
var l=window[B](h,g);
k.contentWindow.opener=l
}catch(i){}}T[h]=true
}function V(k){var m=gadgets.json.stringify;
var g=[];
for(var l=0,h=k.length;
l<h;
++l){g.push(encodeURIComponent(m(k[l])))
}return g.join("&")
}function L(k){var h;
for(var g=W.length-1;
g>=0;
--g){var l=W[g];
try{if(l&&(l.recyclable||l.readyState==="complete")){l.parentNode.removeChild(l);
if(window.ActiveXObject){W[g]=l=null;
W.splice(g,1)
}else{l.recyclable=false;
h=l;
break
}}}catch(j){}}if(!h){h=document.createElement("iframe");
h.style.border=h.style.width=h.style.height="0px";
h.style.visibility="hidden";
h.style.position="absolute";
h.onload=function(){this.recyclable=true
};
W.push(h)
}h.src=k;
setTimeout(function(){document.body.appendChild(h)
},0)
}function a(g,h,m,i,j){var l=gadgets.rpc.getRelayUrl(g);
if(!l){if(window.console&&window.console["log"]){window.console["log"]("No relay file assigned for IFPC")
}}var k=null;
if(U[g]){k=[l,"#",V([m,M,1,0,V([m,h,"","",m].concat(j))])].join("")
}else{k=[l,"#",g,"&",m,"@",M,"&1&0&",encodeURIComponent(i)].join("")
}L(k)
}function f(g,j,m,k){try{if(m!==".."){var i=J[".."];
if(!i&&window.opener&&"GetAuthToken" in window.opener){i=window.opener;
if(i.GetAuthToken()===K[".."]){var h=K[".."];
i.CreateChannel(window[B]("..",h),h);
J[".."]=i;
window.opener=null
}}if(i){i.SendMessage(k);
return 
}}else{if(J[g]){J[g].SendMessage(k);
return 
}}}catch(l){}a(g,j,m,k)
}function A(h,i,n,j,l){try{if(n!==".."){var g=window.frameElement;
if(typeof g[d]==="function"){if(typeof g[d][F]!=="function"){g[d][F]=function(o){S(gadgets.json.parse(o))
}
}g[d](j);
return 
}}else{var m=document.getElementById(h);
if(typeof m[d]==="function"&&typeof m[d][F]==="function"){m[d][F](j);
return 
}}}catch(k){}a(h,i,n,j,l)
}function G(h,j){if(typeof E[h]==="undefined"){E[h]=false;
var i=null;
if(h===".."){i=parent
}else{i=frames[h]
}try{E[h]=i.gadgets.rpc.receiveSameDomain
}catch(g){}}if(typeof E[h]==="function"){E[h](j);
return true
}return false
}if(gadgets.config){function X(g){if(g.rpc.parentRelayUrl.substring(0,7)==="http://"){D[".."]=g.rpc.parentRelayUrl
}else{var i=gadgets.util.getUrlParameters();
var h=i.parent||"";
if(h!==""){D[".."]=h+g.rpc.parentRelayUrl
}}U[".."]=!!g.rpc.useLegacyProtocol
}var Q={parentRelayUrl:gadgets.config.NonEmptyStringValidator};
gadgets.config.register("rpc",Q,X)
}return{register:function(h,g){if(h===R){throw new Error("Cannot overwrite callback service")
}if(h===P){throw new Error("Cannot overwrite default service: use registerDefault")
}C[h]=g
},unregister:function(g){if(g===R){throw new Error("Cannot delete callback service")
}if(g===P){throw new Error("Cannot delete default service: use unregisterDefault")
}delete C[g]
},registerDefault:function(g){C[""]=g
},unregisterDefault:function(){delete C[""]
},forceParentVerifiable:function(){if(I!=="wpm"){I="ifpc"
}},call:function(o,k,p,n){++M;
o=o||"..";
if(p){e[M]=p
}var m="..";
if(o===".."){m=window.name
}var j={s:k,f:m,c:p?M:0,a:Array.prototype.slice.call(arguments,3),t:K[o]};
if(G(o,j)){return 
}var h=gadgets.json.stringify(j);
var i=I;
if(U[o]){i="ifpc"
}switch(i){case"dpm":var q=o===".."?parent.document:frames[o].document;
q.postMessage(h);
break;
case"wpm":var l=o===".."?parent:frames[o];
var g=gadgets.rpc.getRelayUrl(o);
if(g){l.postMessage(h,g)
}break;
case"nix":f(o,k,m,h);
break;
case"fe":A(o,k,m,h,j.a);
break;
default:a(o,k,m,h,j.a);
break
}},getRelayUrl:function(h){var g=D[h];
if(g.indexOf("//")==0){g=document.location.protocol+g
}return g
},setRelayUrl:function(h,g,i){D[h]=g;
U[h]=!!i
},setAuthToken:function(g,h){h=h||"";
K[g]=String(h);
N(g,h)
},getRelayChannel:function(){return I
},receive:function(g){if(g.length>4){S(gadgets.json.parse(decodeURIComponent(g[g.length-1])))
}},receiveSameDomain:function(g){g.a=Array.prototype.slice.call(g.a);
window.setTimeout(function(){S(g)
},0)
}}
}();;
var gadgets=gadgets||{};
gadgets.window=gadgets.window||{};
(function(){var A;
gadgets.window.getViewportDimensions=function(){var B,C;
if(self.innerHeight){B=self.innerWidth;
C=self.innerHeight
}else{if(document.documentElement&&document.documentElement.clientHeight){B=document.documentElement.clientWidth;
C=document.documentElement.clientHeight
}else{if(document.body){B=document.body.clientWidth;
C=document.body.clientHeight
}else{B=0;
C=0
}}}return{width:B,height:C}
};
gadgets.window.adjustHeight=function(F){var C=parseInt(F,10);
if(isNaN(C)){var H=gadgets.window.getViewportDimensions().height;
var B=document.body;
var G=document.documentElement;
if(document.compatMode==="CSS1Compat"&&G.scrollHeight){C=G.scrollHeight!==H?G.scrollHeight:G.offsetHeight
}else{var D=G.scrollHeight;
var E=G.offsetHeight;
if(G.clientHeight!==E){D=B.scrollHeight;
E=B.offsetHeight
}if(D>H){C=D>E?D:E
}else{C=D<E?D:E
}}}if(C!==A){A=C;
gadgets.rpc.call(null,"resize_iframe",null,C)
}}
}());
var _IG_AdjustIFrameHeight=gadgets.window.adjustHeight;;
var gadgets=gadgets||{};
gadgets.flash=gadgets.flash||{};
gadgets.flash.getMajorVersion=function(){var C=0;
if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){var B=navigator.plugins["Shockwave Flash"];
if(B&&B.description){C=parseInt(B.description.match(/[0-9]+/)[0],10)
}}else{for(var A=10;
A>0;
A--){try{var E=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+A);
return A
}catch(D){}}}return C
};
gadgets.flash.swfContainerId_=0;
gadgets.flash.embedFlash=function(E,K,J,C){switch(typeof K){case"string":K=document.getElementById(K);
case"object":if(K&&(typeof K.innerHTML==="string")){break
}default:return false
}switch(typeof C){case"undefined":C={};
case"object":break;
default:return false
}if(E.indexOf("//")==0){E=document.location.protocol+E
}var G=gadgets.flash.getMajorVersion();
if(G){var L=parseInt(J,10);
if(isNaN(L)){L=0
}if(G>=L){if(!C.width){C.width="100%"
}if(!C.height){C.height="100%"
}if(typeof C.base!=="string"){C.base=E.match(/^[^?#]+\//)[0]
}if(typeof C.wmode!=="string"){C.wmode="opaque"
}while(!C.id){var D="swfContainer"+gadgets.flash.swfContainerId_++;
if(!document.getElementById(D)){C.id=D
}}var F;
if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){C.type="application/x-shockwave-flash";
C.src=E;
F="<embed";
for(var B in C){if(!/^swf_/.test(B)){F+=" "+B+'="'+C[B]+'"'
}}F+=" /></embed>"
}else{C.movie=E;
var H={width:C.width,height:C.height,classid:"clsid:D27CDB6E-AE6D-11CF-96B8-444553540000"};
if(C.id){H.id=C.id
}F="<object";
for(var I in H){F+=" "+I+'="'+H[I]+'"'
}F+=">";
for(var A in C){if(!/^swf_/.test(A)&&!H[A]){F+='<param name="'+A+'" value="'+C[A]+'" />'
}}F+="</object>"
}K.innerHTML=F;
return true
}}return false
};
gadgets.flash.embedCachedFlash=function(){var A=Array.prototype.slice.call(arguments);
A[0]=gadgets.io.getProxyUrl(A[0]);
return gadgets.flash.embedFlash.apply(this,A)
};
var _IG_GetFlashMajorVersion=gadgets.flash.getMajorVersion;
var _IG_EmbedFlash=function(C,B,A){return gadgets.flash.embedFlash(C,B,A.swf_version,A)
};
var _IG_EmbedCachedFlash=function(C,B,A){return gadgets.flash.embedCachedFlash(C,B,A.swf_version,A)
};;
var opensocial=opensocial||{};
opensocial.requestPayment=function(A,C,B){opensocial.Container.get().requestPayment(A,C,B)
};
opensocial.requestSendMessage=function(A,D,B,C){opensocial.Container.get().requestSendMessage(A,D,B,C)
};
opensocial.requestShareApp=function(A,D,B,C){opensocial.Container.get().requestShareApp(A,D,B,C)
};
opensocial.requestCreateActivity=function(C,B,A){if(!C||(!C.getField(opensocial.Activity.Field.TITLE)&&!C.getField(opensocial.Activity.Field.TITLE_ID))){if(A){window.setTimeout(function(){A(new opensocial.ResponseItem(null,null,opensocial.ResponseItem.Error.BAD_REQUEST,"You must pass in an activity with a title or title id."))
},0)
}return 
}opensocial.Container.get().requestCreateActivity(C,B,A)
};
opensocial.CreateActivityPriority={HIGH:"HIGH",LOW:"LOW"};
opensocial.hasPermission=function(A){return opensocial.Container.get().hasPermission(A)
};
opensocial.requestPermission=function(B,C,A){opensocial.Container.get().requestPermission(B,C,A)
};
opensocial.Permission={VIEWER:"viewer"};
opensocial.getEnvironment=function(){return opensocial.Container.get().getEnvironment()
};
opensocial.newDataRequest=function(){return opensocial.Container.get().newDataRequest()
};
opensocial.newActivity=function(A){return opensocial.Container.get().newActivity(A)
};
opensocial.newMediaItem=function(C,A,B){return opensocial.Container.get().newMediaItem(C,A,B)
};
opensocial.newMessage=function(A,B){return opensocial.Container.get().newMessage(A,B)
};
opensocial.EscapeType={HTML_ESCAPE:"htmlEscape",NONE:"none"};
opensocial.newIdSpec=function(A){return opensocial.Container.get().newIdSpec(A)
};
opensocial.newNavigationParameters=function(A){return opensocial.Container.get().newNavigationParameters(A)
};
opensocial.newPayment=function(A){return opensocial.Container.get().newPayment(A)
};
Function.prototype.inherits=function(A){function B(){}B.prototype=A.prototype;
this.superClass_=A.prototype;
this.prototype=new B();
this.prototype.constructor=this
};;
opensocial.Activity=function(A){this.fields_=A
};
opensocial.Activity.Field={TITLE_ID:"titleId",TITLE:"title",TEMPLATE_PARAMS:"templateParams",URL:"url",MEDIA_ITEMS:"mediaItems",BODY_ID:"bodyId",BODY:"body",EXTERNAL_ID:"externalId",STREAM_TITLE:"streamTitle",STREAM_URL:"streamUrl",STREAM_SOURCE_URL:"streamSourceUrl",STREAM_FAVICON_URL:"streamFaviconUrl",PRIORITY:"priority",ID:"id",USER_ID:"userId",APP_ID:"appId",POSTED_TIME:"postedTime"};
opensocial.Activity.prototype.getId=function(){return this.getField(opensocial.Activity.Field.ID)
};
opensocial.Activity.prototype.getField=function(A,B){return opensocial.Container.getField(this.fields_,A,B)
};
opensocial.Activity.prototype.setField=function(A,B){return(this.fields_[A]=B)
};;
opensocial.Address=function(A){this.fields_=A||{}
};
opensocial.Address.Field={TYPE:"type",UNSTRUCTURED_ADDRESS:"unstructuredAddress",PO_BOX:"poBox",STREET_ADDRESS:"streetAddress",EXTENDED_ADDRESS:"extendedAddress",REGION:"region",LOCALITY:"locality",POSTAL_CODE:"postalCode",COUNTRY:"country",LATITUDE:"latitude",LONGITUDE:"longitude"};
opensocial.Address.prototype.getField=function(A,B){return opensocial.Container.getField(this.fields_,A,B)
};;
opensocial.BodyType=function(A){this.fields_=A||{}
};
opensocial.BodyType.Field={BUILD:"build",HEIGHT:"height",WEIGHT:"weight",EYE_COLOR:"eyeColor",HAIR_COLOR:"hairColor"};
opensocial.BodyType.prototype.getField=function(A,B){return opensocial.Container.getField(this.fields_,A,B)
};;
opensocial.Collection=function(C,B,A){this.array_=C||[];
this.offset_=B||0;
this.totalSize_=A||this.array_.length
};
opensocial.Collection.prototype.getById=function(C){for(var A=0;
A<this.size();
A++){var B=this.array_[A];
if(B.getId()===C){return B
}}return null
};
opensocial.Collection.prototype.size=function(){return this.array_.length
};
opensocial.Collection.prototype.each=function(B){for(var A=0;
A<this.size();
A++){B(this.array_[A])
}};
opensocial.Collection.prototype.asArray=function(){return this.array_
};
opensocial.Collection.prototype.getTotalSize=function(){return this.totalSize_
};
opensocial.Collection.prototype.getOffset=function(){return this.offset_
};;
opensocial.Container=function(){};
opensocial.Container.container_=null;
opensocial.Container.setContainer=function(A){opensocial.Container.container_=A
};
opensocial.Container.get=function(){return opensocial.Container.container_
};
opensocial.Container.prototype.getEnvironment=function(){};
opensocial.Container.prototype.requestPayment=function(A,C,B){if(B){window.setTimeout(function(){B(new opensocial.ResponseItem(null,A,opensocial.Payment.ResponseCode.NOT_IMPLEMENTED,null))
},0)
}};
opensocial.Container.prototype.requestSendMessage=function(A,D,B,C){if(B){window.setTimeout(function(){B(new opensocial.ResponseItem(null,null,opensocial.ResponseItem.Error.NOT_IMPLEMENTED,null))
},0)
}};
opensocial.Container.prototype.requestShareApp=function(A,D,B,C){if(B){window.setTimeout(function(){B(new opensocial.ResponseItem(null,null,opensocial.ResponseItem.Error.NOT_IMPLEMENTED,null))
},0)
}};
opensocial.Container.prototype.requestCreateActivity=function(C,B,A){if(A){window.setTimeout(function(){A(new opensocial.ResponseItem(null,null,opensocial.ResponseItem.Error.NOT_IMPLEMENTED,null))
},0)
}};
opensocial.Container.prototype.hasPermission=function(A){return false
};
opensocial.Container.prototype.requestPermission=function(B,C,A){if(A){window.setTimeout(function(){A(new opensocial.ResponseItem(null,null,opensocial.ResponseItem.Error.NOT_IMPLEMENTED,null))
},0)
}};
opensocial.Container.prototype.requestData=function(A,B){};
opensocial.Container.prototype.newFetchPersonRequest=function(B,A){};
opensocial.Container.prototype.newFetchPeopleRequest=function(A,B){};
opensocial.Container.prototype.newFetchPersonAppDataRequest=function(A,C,B){};
opensocial.Container.prototype.newUpdatePersonAppDataRequest=function(A,B){};
opensocial.Container.prototype.newRemovePersonAppDataRequest=function(A){};
opensocial.Container.prototype.newFetchActivitiesRequest=function(A,B){};
opensocial.Container.prototype.newFetchMessageCollectionsRequest=function(A,B){};
opensocial.Container.prototype.newFetchMessagesRequest=function(A,C,B){};
opensocial.Container.prototype.newFetchPaymentRequest=function(B,A){};
opensocial.Container.prototype.newCollection=function(C,B,A){return new opensocial.Collection(C,B,A)
};
opensocial.Container.prototype.newPerson=function(A,B,C){return new opensocial.Person(A,B,C)
};
opensocial.Container.prototype.newActivity=function(A){return new opensocial.Activity(A)
};
opensocial.Container.prototype.newMediaItem=function(C,A,B){return new opensocial.MediaItem(C,A,B)
};
opensocial.Container.prototype.newMessage=function(A,B){return new opensocial.Message(A,B)
};
opensocial.Container.prototype.newIdSpec=function(A){return new opensocial.IdSpec(A)
};
opensocial.Container.prototype.newNavigationParameters=function(A){return new opensocial.NavigationParameters(A)
};
opensocial.Container.prototype.newResponseItem=function(A,C,B,D){return new opensocial.ResponseItem(A,C,B,D)
};
opensocial.Container.prototype.newDataResponse=function(A,B){return new opensocial.DataResponse(A,B)
};
opensocial.Container.prototype.newDataRequest=function(){return new opensocial.DataRequest()
};
opensocial.Container.prototype.newEnvironment=function(B,A){return new opensocial.Environment(B,A)
};
opensocial.Container.prototype.newPayment=function(A){return new opensocial.Payment(A)
};
opensocial.Container.isArray=function(A){return A instanceof Array
};
opensocial.Container.getField=function(A,B,C){var D=A[B];
return opensocial.Container.escape(D,C,false)
};
opensocial.Container.escape=function(C,B,A){if(B&&B.escapeType=="none"){return C
}else{return gadgets.util.escape(C,A)
}};
var cajita;
var ___;
var attachDocumentStub;
var uriCallback={rewrite:function rewrite(B,A){B=String(B);
if(/^#/.test(B)){return"#"+encodeURIComponent(decodeURIComponent(B.substring(1)))
}else{if(/^\/(?:[^\/][^?#]*)?$/.test(B)){return encodeURI(decodeURI(B))
}}return null
}};
function tameCallback(B,C){return C&&function A(){return B.cf(C,Array.slice(arguments,0))
}
}var taming={flash:{embedFlash:function(B){return ___.frozenFunc(function A(F,E,D,C){return B.call(this,F,E.node___,D,C)
})
}},MiniMessage:function(C){var B=gadgets.MiniMessage;
var A=function(E,D){this.mm_=new B(E,D)
};
A.prototype.createDismissibleMessage=function(E,D){E=html_sanitize(E);
return this.mm_.createDismissibleMessage(E,tameCallback(C,D))
};
A.prototype.createStaticMessage=function(E,D){E=html_sanitize(E);
return this.mm_.createStaticMessage(E,tameCallback(C,D))
};
A.prototype.createTimerMessage=function(E,F,D){E=html_sanitize(E);
return this.mm_.createTimerMessage(E,F,tameCallback(C,D))
};
A.prototype.dismissMessage=function(D){return this.mm_.dismissMessage(D)
};
return A
},newDataRequest:function(B,C){return function A(){var D={super_:C(),add:___.frozenFunc(function(E,F){return this.super_.add(E,F)
}),newFetchPersonAppDataRequest:___.frozenFunc(function(E,F){return this.super_.newFetchPersonAppDataRequest(E,F)
}),newFetchPersonRequest:___.frozenFunc(function(E,F){return this.super_.newFetchPersonRequest(E,F)
}),newFetchPeopleRequest:___.frozenFunc(function(E,F){return this.super_.newFetchPeopleRequest(E,F)
}),newUpdatePersonAppDataRequest:___.frozenFunc(function(E,F){return this.super_.newUpdatePersonAppDataRequest(E,F)
}),send:___.frozenFunc(function(E){return this.super_.send(tameCallback(B,E))
})};
return D
}
},TabSet:function(A,C){var B=function(F,E,D){this.ts_=new C(F,E,D)
};
B.prototype.addTab=function(E,D){if(D){D.contentContainer=D.contentContainer?undefined:___.guard(blah)&&D.contentContainer.node___
}this.ts_.addTab(html_sanitize(E),D)
};
B.prototype.alignTabs=function(E,D){this.ts_.alignTabs(String(E),Number(D))
};
B.prototype.displayTabs=function(D){this.ts_.displayTabs(Boolean(D))
};
return B
},util:{registerOnLoadHandler:function(B,C){return function A(D){C(tameCallback(B,D))
}
}},views:{getCurrentView:function(B){return function A(){var C=B.call(this);
___.grantGeneric(C,"getName");
___.grantGeneric(C,"isOnlyVisibleGadget");
return C
}
}}};
opensocial.Container.prototype.enableCaja=function(){___=window.___;
cajita=window.cajita;
valijaMaker=window.valijaMaker;
attachDocumentStub=window.attachDocumentStub;
var A=___.copy(___.sharedImports);
A.outers=A;
var D=document.createElement("div");
D.className="g___";
document.body.appendChild(D);
A.htmlEmitter___=new HtmlEmitter(D);
A.getCssContainer___=function(){return D
};
attachDocumentStub("-g___",uriCallback,A,D);
A.$v=valijaMaker.CALL___(A.outers);
___.getNewModuleHandler().setImports(A);
if(gadgets.flash){gadgets.flash.embedFlash=taming.flash.embedFlash(gadgets.flash.embedFlash)
}gadgets.util.registerOnLoadHandler=taming.util.registerOnLoadHandler(A.$v,gadgets.util.registerOnLoadHandler);
if(gadgets.views){gadgets.views.getCurrentView=taming.views.getCurrentView(gadgets.views.getCurrentView)
}opensocial.newDataRequest=taming.newDataRequest(A.$v,opensocial.newDataRequest);
if(gadgets.MiniMessage){gadgets.MiniMessage=taming.MiniMessage(A.$v)
}if(gadgets.TabSet){gadgets.TabSet=taming.TabSet(A.$v,gadgets.TabSet)
}A.outers.gadgets=gadgets;
A.outers.opensocial=opensocial;
var C={c_gadgets:{c_MiniMessage:{m_createDismissibleMessage:0,m_createStaticMessage:0,m_createTimerMessage:0,m_dismissMessage:0},c_Prefs:{m_getArray:0,m_getBool:0,m_getCountry:0,m_getFloat:0,m_getInt:0,m_getLang:0,m_getMsg:0,m_getString:0,m_set:0,m_setArray:0},c_Tab:{m_getCallback:0,m_getContentContainer:0,m_getIndex:0,m_getName:0,m_getNameContainer:0},c_TabSet:{m_addTab:0},c_flash:{s_embedCachedFlash:0,s_embedFlash:0,s_getMajorVersion:0},c_io:{c_AuthorizationType:{s_NONE:0,s_OAUTH:0,s_SIGNED:0},c_ContentType:{s_DOM:0,s_FEED:0,s_JSON:0,s_TEXT:0},c_MethodType:{s_DELETE:0,s_GET:0,s_HEAD:0,s_POST:0,s_PUT:0},c_ProxyUrlRequestParameters:{s_REFRESH_INTERVAL:0},c_RequestParameters:{s_AUTHORIZATION:0,s_CONTENT_TYPE:0,s_GET_SUMMARIES:0,s_HEADERS:0,s_METHOD:0,s_NUM_ENTRIES:0,s_POST_DATA:0},s_encodeValues:0,s_getProxyUrl:0,s_makeRequest:0},c_json:{s_parse:0,s_stringify:0},c_pubsub:{s_publish:0,s_subscribe:0,s_unsubscribe:0},c_rpc:{s_call:0,s_register:0,s_registerDefault:0,s_unregister:0,s_unregisterDefault:0},c_skins:{c_Property:{s_ANCHOR_COLOR:0,s_BG_COLOR:0,s_BG_IMAGE:0,s_FONT_COLOR:0},s_getProperty:0},c_util:{s_escapeString:0,s_getFeatureParameters:0,s_hasFeature:0,s_registerOnLoadHandler:0,s_unescapeString:0},c_views:{c_View:{m_bind:0,m_getUrlTemplate:0,m_isOnlyVisibleGadget:0},c_ViewType:{s_CANVAS:0,s_HOME:0,s_PREVIEW:0,s_PROFILE:0},s_bind:0,s_getCurrentView:0,s_getParams:0,s_requestNavigateTo:0},c_window:{s_adjustHeight:0,s_getViewportDimensions:0,s_setTitle:0}},c_opensocial:{c_Activity:{c_Field:{s_APP_ID:0,s_BODY:0,s_BODY_ID:0,s_EXTERNAL_ID:0,s_ID:0,s_MEDIA_ITEMS:0,s_POSTED_TIME:0,s_PRIORITY:0,s_STREAM_FAVICON_URL:0,s_STREAM_SOURCE_URL:0,s_STREAM_TITLE:0,s_STREAM_URL:0,s_TEMPLATE_PARAMS:0,s_TITLE:0,s_TITLE_ID:0,s_URL:0,s_USER_ID:0},m_getField:0,m_getId:0,m_setField:0},c_Address:{c_Field:{s_COUNTRY:0,s_EXTENDED_ADDRESS:0,s_LATITUDE:0,s_LOCALITY:0,s_LONGITUDE:0,s_POSTAL_CODE:0,s_PO_BOX:0,s_REGION:0,s_STREET_ADDRESS:0,s_TYPE:0,s_UNSTRUCTURED_ADDRESS:0},m_getField:0},c_BodyType:{c_Field:{s_BUILD:0,s_EYE_COLOR:0,s_HAIR_COLOR:0,s_HEIGHT:0,s_WEIGHT:0},m_getField:0},c_Collection:{m_asArray:0,m_each:0,m_getById:0,m_getOffset:0,m_getTotalSize:0,m_size:0},c_CreateActivityPriority:{s_HIGH:0,s_LOW:0},c_DataRequest:{c_DataRequestFields:{s_ESCAPE_TYPE:0},c_FilterType:{s_ALL:0,s_HAS_APP:0,s_TOP_FRIENDS:0},c_PeopleRequestFields:{s_FILTER:0,s_FILTER_OPTIONS:0,s_FIRST:0,s_MAX:0,s_PROFILE_DETAILS:0,s_SORT_ORDER:0},c_SortOrder:{s_NAME:0,s_TOP_FRIENDS:0},m_add:0,m_newFetchActivitiesRequest:0,m_newFetchPeopleRequest:0,m_newFetchPersonAppDataRequest:0,m_newFetchPersonRequest:0,m_newRemovePersonAppDataRequest:0,m_newUpdatePersonAppDataRequest:0,m_send:0},c_DataResponse:{m_get:0,m_getErrorMessage:0,m_hadError:0},c_Email:{c_Field:{s_ADDRESS:0,s_TYPE:0},m_getField:0},c_Enum:{c_Drinker:{s_HEAVILY:0,s_NO:0,s_OCCASIONALLY:0,s_QUIT:0,s_QUITTING:0,s_REGULARLY:0,s_SOCIALLY:0,s_YES:0},c_Gender:{s_FEMALE:0,s_MALE:0},c_LookingFor:{s_ACTIVITY_PARTNERS:0,s_DATING:0,s_FRIENDS:0,s_NETWORKING:0,s_RANDOM:0,s_RELATIONSHIP:0},c_Presence:{s_AWAY:0,s_CHAT:0,s_DND:0,s_OFFLINE:0,s_ONLINE:0,s_XA:0},c_Smoker:{s_HEAVILY:0,s_NO:0,s_OCCASIONALLY:0,s_QUIT:0,s_QUITTING:0,s_REGULARLY:0,s_SOCIALLY:0,s_YES:0},m_getDisplayValue:0,m_getKey:0},c_Environment:{c_ObjectType:{s_ACTIVITY:0,s_ACTIVITY_MEDIA_ITEM:0,s_ADDRESS:0,s_BODY_TYPE:0,s_EMAIL:0,s_FILTER_TYPE:0,s_MESSAGE:0,s_MESSAGE_TYPE:0,s_NAME:0,s_ORGANIZATION:0,s_PERSON:0,s_PHONE:0,s_SORT_ORDER:0,s_URL:0},m_getDomain:0,m_supportsField:0},c_EscapeType:{s_HTML_ESCAPE:0,s_NONE:0},c_IdSpec:{c_Field:{s_GROUP_ID:0,s_NETWORK_DISTANCE:0,s_USER_ID:0},c_PersonId:{s_OWNER:0,s_VIEWER:0},m_getField:0,m_setField:0},c_MediaItem:{c_Field:{s_MIME_TYPE:0,s_TYPE:0,s_URL:0},c_Type:{s_AUDIO:0,s_IMAGE:0,s_VIDEO:0},m_getField:0,m_setField:0},c_Message:{c_Field:{s_BODY:0,s_BODY_ID:0,s_TITLE:0,s_TITLE_ID:0,s_TYPE:0},c_Type:{s_EMAIL:0,s_NOTIFICATION:0,s_PRIVATE_MESSAGE:0,s_PUBLIC_MESSAGE:0},m_getField:0,m_setField:0},c_Name:{c_Field:{s_ADDITIONAL_NAME:0,s_FAMILY_NAME:0,s_GIVEN_NAME:0,s_HONORIFIC_PREFIX:0,s_HONORIFIC_SUFFIX:0,s_UNSTRUCTURED:0},m_getField:0},c_NavigationParameters:{c_DestinationType:{s_RECIPIENT_DESTINATION:0,s_VIEWER_DESTINATION:0},c_Field:{s_OWNER:0,s_PARAMETERS:0,s_VIEW:0},m_getField:0,m_setField:0},c_Organization:{c_Field:{s_ADDRESS:0,s_DESCRIPTION:0,s_END_DATE:0,s_FIELD:0,s_NAME:0,s_SALARY:0,s_START_DATE:0,s_SUB_FIELD:0,s_TITLE:0,s_WEBPAGE:0},m_getField:0},c_Permission:{s_VIEWER:0},c_Person:{c_Field:{s_ABOUT_ME:0,s_ACTIVITIES:0,s_ADDRESSES:0,s_AGE:0,s_BODY_TYPE:0,s_BOOKS:0,s_CARS:0,s_CHILDREN:0,s_CURRENT_LOCATION:0,s_DATE_OF_BIRTH:0,s_DRINKER:0,s_EMAILS:0,s_ETHNICITY:0,s_FASHION:0,s_FOOD:0,s_GENDER:0,s_HAPPIEST_WHEN:0,s_HAS_APP:0,s_HEROES:0,s_HUMOR:0,s_ID:0,s_INTERESTS:0,s_JOBS:0,s_JOB_INTERESTS:0,s_LANGUAGES_SPOKEN:0,s_LIVING_ARRANGEMENT:0,s_LOOKING_FOR:0,s_MOVIES:0,s_MUSIC:0,s_NAME:0,s_NETWORK_PRESENCE:0,s_NICKNAME:0,s_PETS:0,s_PHONE_NUMBERS:0,s_POLITICAL_VIEWS:0,s_PROFILE_SONG:0,s_PROFILE_URL:0,s_PROFILE_VIDEO:0,s_QUOTES:0,s_RELATIONSHIP_STATUS:0,s_RELIGION:0,s_ROMANCE:0,s_SCARED_OF:0,s_SCHOOLS:0,s_SEXUAL_ORIENTATION:0,s_SMOKER:0,s_SPORTS:0,s_STATUS:0,s_TAGS:0,s_THUMBNAIL_URL:0,s_TIME_ZONE:0,s_TURN_OFFS:0,s_TURN_ONS:0,s_TV_SHOWS:0,s_URLS:0},m_getDisplayName:0,m_getField:0,m_getId:0,m_isOwner:0,m_isViewer:0},c_Phone:{c_Field:{s_NUMBER:0,s_TYPE:0},m_getField:0},c_ResponseItem:{c_Error:{s_BAD_REQUEST:0,s_FORBIDDEN:0,s_INTERNAL_ERROR:0,s_LIMIT_EXCEEDED:0,s_NOT_IMPLEMENTED:0,s_UNAUTHORIZED:0},m_getData:0,m_getErrorCode:0,m_getErrorMessage:0,m_getOriginalDataRequest:0,m_hadError:0},c_Url:{c_Field:{s_ADDRESS:0,s_LINK_TEXT:0,s_TYPE:0},m_getField:0},s_getEnvironment:0,s_hasPermission:0,s_newActivity:0,s_newDataRequest:0,s_newIdSpec:0,s_newMediaItem:0,s_newMessage:0,s_newNavigationParameters:0,s_requestCreateActivity:0,s_requestPermission:0,s_requestSendMessage:0,s_requestShareApp:0}};
function B(I,J){if(!J){return 
}for(var F in I){if(I.hasOwnProperty(F)){var E=F.match(/^([mcsa])_(\w+)$/);
var H=E[1],G=E[2];
switch(H){case"c":___.grantRead(J,G);
B(I[F],J[G]);
break;
case"m":___.grantGeneric(J.prototype,G);
break;
case"f":___.grantRead(J.prototype,G);
break;
case"a":if("function"===typeof J[G]&&I[F]){___.handleGeneric(J,G,I[F](J[G]))
}break;
case"s":if("function"===typeof J[G]){___.grantFunc(J,G)
}else{___.grantRead(J,G)
}break
}}}}B(C,A.outers);
if(gadgets.MiniMessage){___.ctor(gadgets.MiniMessage,Object,"MiniMessage")
}if(gadgets.TabSet){___.ctor(gadgets.TabSet,Object,"TabSet")
}};;
opensocial.DataRequest=function(){this.requestObjects_=[]
};
opensocial.DataRequest.prototype.requestObjects_=null;
opensocial.DataRequest.prototype.getRequestObjects=function(){return this.requestObjects_
};
opensocial.DataRequest.prototype.add=function(B,A){return this.requestObjects_.push({key:A,request:B})
};
opensocial.DataRequest.prototype.send=function(A){var B=A||function(){};
opensocial.Container.get().requestData(this,B)
};
opensocial.DataRequest.SortOrder={TOP_FRIENDS:"topFriends",NAME:"name"};
opensocial.DataRequest.FilterType={ALL:"all",HAS_APP:"hasApp",TOP_FRIENDS:"topFriends",IS_FRIENDS_WITH:"isFriendsWith"};
opensocial.DataRequest.PeopleRequestFields={PROFILE_DETAILS:"profileDetail",SORT_ORDER:"sortOrder",FILTER:"filter",FILTER_OPTIONS:"filterOptions",FIRST:"first",MAX:"max",APP_DATA:"appData",ESCAPE_TYPE:"escapeType"};
opensocial.DataRequest.prototype.addDefaultParam=function(C,B,A){C[B]=C[B]||A
};
opensocial.DataRequest.prototype.addDefaultProfileFields=function(B){var A=opensocial.DataRequest.PeopleRequestFields;
var C=B[A.PROFILE_DETAILS]||[];
B[A.PROFILE_DETAILS]=C.concat([opensocial.Person.Field.ID,opensocial.Person.Field.NAME,opensocial.Person.Field.THUMBNAIL_URL])
};
opensocial.DataRequest.prototype.asArray=function(A){if(opensocial.Container.isArray(A)){return A
}else{return[A]
}};
opensocial.DataRequest.prototype.newFetchPersonRequest=function(B,A){A=A||{};
this.addDefaultProfileFields(A);
return opensocial.Container.get().newFetchPersonRequest(B,A)
};
opensocial.DataRequest.prototype.newFetchPeopleRequest=function(B,C){C=C||{};
var A=opensocial.DataRequest.PeopleRequestFields;
this.addDefaultProfileFields(C);
this.addDefaultParam(C,A.SORT_ORDER,opensocial.DataRequest.SortOrder.TOP_FRIENDS);
this.addDefaultParam(C,A.FILTER,opensocial.DataRequest.FilterType.ALL);
this.addDefaultParam(C,A.FIRST,0);
this.addDefaultParam(C,A.MAX,20);
return opensocial.Container.get().newFetchPeopleRequest(B,C)
};
opensocial.DataRequest.DataRequestFields={ESCAPE_TYPE:"escapeType"};
opensocial.DataRequest.prototype.newFetchPersonAppDataRequest=function(A,C,B){return opensocial.Container.get().newFetchPersonAppDataRequest(A,this.asArray(C),B)
};
opensocial.DataRequest.prototype.newUpdatePersonAppDataRequest=function(A,B){return opensocial.Container.get().newUpdatePersonAppDataRequest(A,B)
};
opensocial.DataRequest.prototype.newRemovePersonAppDataRequest=function(A){return opensocial.Container.get().newRemovePersonAppDataRequest(A)
};
opensocial.DataRequest.ActivityRequestFields={APP_ID:"appId",FIRST:"first",MAX:"max"};
opensocial.DataRequest.prototype.newFetchActivitiesRequest=function(B,C){C=C||{};
var A=opensocial.DataRequest.ActivityRequestFields;
this.addDefaultParam(C,A.FIRST,0);
this.addDefaultParam(C,A.MAX,20);
return opensocial.Container.get().newFetchActivitiesRequest(B,C)
};
opensocial.DataRequest.prototype.newFetchMessageCollectionsRequest=function(A,B){B=B||{};
return opensocial.Container.get().newFetchMessageCollectionsRequest(A,B)
};
opensocial.DataRequest.prototype.newFetchMessagesRequest=function(A,C,B){B=B||{};
return opensocial.Container.get().newFetchMessagesRequest(A,C,B)
};
opensocial.DataRequest.PaymentRequestFields={TYPE:"type",IS_COMPLETE:"isComplete",MAX:"max",START_TIME:"startTime"};
opensocial.DataRequest.prototype.newFetchPaymentRequest=function(C,B){B=B||{};
var A=opensocial.DataRequest.PaymentRequestFields;
this.addDefaultParam(B,A.MAX,5);
this.addDefaultParam(B,A.START_TIME,new Date().getTime()-86400000000);
return opensocial.Container.get().newFetchPaymentRequest(C,B)
};;
opensocial.DataResponse=function(A,B,C){this.responseItems_=A;
this.globalError_=B;
this.errorMessage_=C
};
opensocial.DataResponse.prototype.hadError=function(){return !!this.globalError_
};
opensocial.DataResponse.prototype.getErrorMessage=function(){return this.errorMessage_
};
opensocial.DataResponse.prototype.get=function(A){return this.responseItems_[A]
};;
opensocial.Email=function(A){this.fields_=A||{}
};
opensocial.Email.Field={TYPE:"type",ADDRESS:"address"};
opensocial.Email.prototype.getField=function(A,B){return opensocial.Container.getField(this.fields_,A,B)
};;
opensocial.Enum=function(B,A){this.key=B;
this.displayValue=A
};
opensocial.Enum.prototype.getKey=function(){return gadgets.util.escape(this.key)
};
opensocial.Enum.prototype.getDisplayValue=function(){return gadgets.util.escape(this.displayValue)
};
opensocial.Enum.Smoker={NO:"NO",YES:"YES",SOCIALLY:"SOCIALLY",OCCASIONALLY:"OCCASIONALLY",REGULARLY:"REGULARLY",HEAVILY:"HEAVILY",QUITTING:"QUITTING",QUIT:"QUIT"};
opensocial.Enum.Drinker={NO:"NO",YES:"YES",SOCIALLY:"SOCIALLY",OCCASIONALLY:"OCCASIONALLY",REGULARLY:"REGULARLY",HEAVILY:"HEAVILY",QUITTING:"QUITTING",QUIT:"QUIT"};
opensocial.Enum.Gender={MALE:"MALE",FEMALE:"FEMALE"};
opensocial.Enum.LookingFor={DATING:"DATING",FRIENDS:"FRIENDS",RELATIONSHIP:"RELATIONSHIP",NETWORKING:"NETWORKING",ACTIVITY_PARTNERS:"ACTIVITY_PARTNERS",RANDOM:"RANDOM"};
opensocial.Enum.Presence={AWAY:"AWAY",CHAT:"CHAT",DND:"DND",OFFLINE:"OFFLINE",ONLINE:"ONLINE",XA:"XA"};;
opensocial.Environment=function(B,A){this.domain=B;
this.supportedFields=A
};
opensocial.Environment.prototype.getDomain=function(){return this.domain
};
opensocial.Environment.ObjectType={PERSON:"person",ADDRESS:"address",BODY_TYPE:"bodyType",EMAIL:"email",NAME:"name",ORGANIZATION:"organization",PHONE:"phone",URL:"url",ACTIVITY:"activity",MEDIA_ITEM:"mediaItem",MESSAGE:"message",MESSAGE_TYPE:"messageType",SORT_ORDER:"sortOrder",FILTER_TYPE:"filterType"};
opensocial.Environment.prototype.supportsField=function(A,C){var B=this.supportedFields[A]||[];
return !!B[C]
};;
opensocial.IdSpec=function(A){this.fields_=A||{}
};
opensocial.IdSpec.Field={USER_ID:"userId",GROUP_ID:"groupId",NETWORK_DISTANCE:"networkDistance"};
opensocial.IdSpec.PersonId={OWNER:"OWNER",VIEWER:"VIEWER"};
opensocial.IdSpec.GroupId={SELF:"SELF",FRIENDS:"FRIENDS",ALL:"ALL"};
opensocial.IdSpec.prototype.getField=function(A,B){return opensocial.Container.getField(this.fields_,A,B)
};
opensocial.IdSpec.prototype.setField=function(A,B){return(this.fields_[A]=B)
};;
opensocial.MediaItem=function(C,A,B){this.fields_=B||{};
this.fields_[opensocial.MediaItem.Field.MIME_TYPE]=C;
this.fields_[opensocial.MediaItem.Field.URL]=A
};
opensocial.MediaItem.Type={IMAGE:"image",VIDEO:"video",AUDIO:"audio"};
opensocial.MediaItem.Field={TYPE:"type",MIME_TYPE:"mimeType",URL:"url"};
opensocial.MediaItem.prototype.getField=function(A,B){return opensocial.Container.getField(this.fields_,A,B)
};
opensocial.MediaItem.prototype.setField=function(A,B){return(this.fields_[A]=B)
};;
opensocial.MessageCollection=function(A){this.fields_=A||{}
};
opensocial.MessageCollection.Field={ID:"id",TITLE:"title",TOTAL:"total",UNREAD:"unread",UPDATED:"updated",URLS:"urls"};
opensocial.MessageCollection.prototype.getField=function(A,B){return opensocial.Container.getField(this.fields_,A,B)
};
opensocial.MessageCollection.prototype.setField=function(A,B){return this.fields_[A]=B
};;
opensocial.Message=function(A,B){if(typeof A=="string"){this.fields_=B||{};
this.fields_[opensocial.Message.Field.BODY]=A
}else{this.fields_=A||{}
}};
opensocial.Message.Field={APP_URL:"appUrl",BODY:"body",BODY_ID:"bodyId",COLLECTION_IDS:"collectionIds",ID:"id",PARENT_ID:"parentId",RECIPIENTS:"recipients",SENDER_ID:"senderId",STATUS:"status",TIME_SENT:"timeSent",TITLE:"title",TITLE_ID:"titleId",TYPE:"type",UPDATED:"updated",URLS:"urls"};
opensocial.Message.Type={EMAIL:"email",NOTIFICATION:"notification",PRIVATE_MESSAGE:"privateMessage",PUBLIC_MESSAGE:"publicMessage"};
opensocial.Message.Status={NEW:"new",DELETED:"deleted",FLAGGED:"flagged"};
opensocial.Message.prototype.getField=function(A,B){return opensocial.Container.getField(this.fields_,A,B)
};
opensocial.Message.prototype.setField=function(A,B){return(this.fields_[A]=B)
};;
opensocial.Name=function(A){this.fields_=A||{}
};
opensocial.Name.Field={FAMILY_NAME:"familyName",GIVEN_NAME:"givenName",ADDITIONAL_NAME:"additionalName",HONORIFIC_PREFIX:"honorificPrefix",HONORIFIC_SUFFIX:"honorificSuffix",UNSTRUCTURED:"unstructured"};
opensocial.Name.prototype.getField=function(A,B){return opensocial.Container.getField(this.fields_,A,B)
};;
opensocial.NavigationParameters=function(A){this.fields_=A||{}
};
opensocial.NavigationParameters.Field={VIEW:"view",OWNER:"owner",PARAMETERS:"parameters"};
opensocial.NavigationParameters.prototype.getField=function(A,B){return opensocial.Container.getField(this.fields_,A,B)
};
opensocial.NavigationParameters.prototype.setField=function(A,B){return(this.fields_[A]=B)
};
opensocial.NavigationParameters.DestinationType={VIEWER_DESTINATION:"viewerDestination",RECIPIENT_DESTINATION:"recipientDestination"};;
opensocial.Organization=function(A){this.fields_=A||{}
};
opensocial.Organization.Field={NAME:"name",TITLE:"title",DESCRIPTION:"description",FIELD:"field",SUB_FIELD:"subField",START_DATE:"startDate",END_DATE:"endDate",SALARY:"salary",ADDRESS:"address",WEBPAGE:"webpage"};
opensocial.Organization.prototype.getField=function(A,B){return opensocial.Container.getField(this.fields_,A,B)
};;
opensocial.Payment=function(A){this.fields_=A||{};
this.fields_[opensocial.Payment.Field.PAYMENT_TYPE]=this.fields_[opensocial.Payment.Field.PAYMENT_TYPE]||opensocial.Payment.PaymentType.PAYMENT
};
opensocial.Payment.prototype.isPayment=function(){return this.fields_[opensocial.Payment.Field.PAYMENT_TYPE]==opensocial.Payment.PaymentType.PAYMENT
};
opensocial.Payment.prototype.isCredit=function(){return this.fields_[opensocial.Payment.Field.PAYMENT_TYPE]==opensocial.Payment.PaymentType.CREDIT
};
opensocial.Payment.prototype.isComplete=function(){return !!this.fields_[opensocial.Payment.Field.PAYMENT_COMPLETE]
};
opensocial.Payment.Field={AMOUNT:"amount",MESSAGE:"message",PARAMETERS:"parameters",PAYMENT_TYPE:"paymentType",ORDER_ID:"orderId",ORDERED_TIME:"orderedTime",SUBMITTED_TIME:"submittedTime",EXECUTED_TIME:"executedTime",RESPONSE_CODE:"responseCode",RESPONSE_MESSAGE:"responseMessage",PAYMENT_COMPLETE:"paymentComplete"};
opensocial.Payment.prototype.getField=function(A,B){return opensocial.Container.getField(this.fields_,A,B)
};
opensocial.Payment.prototype.setField=function(A,B){return this.fields_[A]=B
};
opensocial.Payment.PaymentType={PAYMENT:"payment",CREDIT:"credit"};
opensocial.Payment.ResponseCode={APP_LOGIC_ERROR:"appLogicError",APP_NETWORK_FAILURE:"appNetworkFailure",INSUFFICIENT_MONEY:"insufficientMoney",INVALID_TOKEN:"invalidToken",MALFORMED_REQUEST:"malformedRequest",NOT_IMPLEMENTED:"notImplemented",OK:"ok",PAYMENT_ERROR:"paymentError",PAYMENT_PROCESSOR_ALREADY_OPENED:"paymentProcessorAlreadyOpened",UNKNOWN_ERROR:"unknownError",USER_CANCELLED:"userCancelled"};;
opensocial.Person=function(A,B,C){this.fields_=A||{};
this.isOwner_=B;
this.isViewer_=C
};
opensocial.Person.Field={ID:"id",NAME:"name",NICKNAME:"nickname",THUMBNAIL_URL:"thumbnailUrl",PROFILE_URL:"profileUrl",CURRENT_LOCATION:"currentLocation",ADDRESSES:"addresses",EMAILS:"emails",PHONE_NUMBERS:"phoneNumbers",ABOUT_ME:"aboutMe",STATUS:"status",PROFILE_SONG:"profileSong",PROFILE_VIDEO:"profileVideo",GENDER:"gender",SEXUAL_ORIENTATION:"sexualOrientation",RELATIONSHIP_STATUS:"relationshipStatus",AGE:"age",DATE_OF_BIRTH:"dateOfBirth",BODY_TYPE:"bodyType",ETHNICITY:"ethnicity",SMOKER:"smoker",DRINKER:"drinker",CHILDREN:"children",PETS:"pets",LIVING_ARRANGEMENT:"livingArrangement",TIME_ZONE:"timeZone",LANGUAGES_SPOKEN:"languagesSpoken",JOBS:"jobs",JOB_INTERESTS:"jobInterests",SCHOOLS:"schools",INTERESTS:"interests",URLS:"urls",MUSIC:"music",MOVIES:"movies",TV_SHOWS:"tvShows",BOOKS:"books",ACTIVITIES:"activities",SPORTS:"sports",HEROES:"heroes",QUOTES:"quotes",CARS:"cars",FOOD:"food",TURN_ONS:"turnOns",TURN_OFFS:"turnOffs",TAGS:"tags",ROMANCE:"romance",SCARED_OF:"scaredOf",HAPPIEST_WHEN:"happiestWhen",FASHION:"fashion",HUMOR:"humor",LOOKING_FOR:"lookingFor",RELIGION:"religion",POLITICAL_VIEWS:"politicalViews",HAS_APP:"hasApp",NETWORK_PRESENCE:"networkPresence"};
opensocial.Person.prototype.getId=function(){return this.getField(opensocial.Person.Field.ID)
};
var ORDERED_NAME_FIELDS_=[opensocial.Name.Field.HONORIFIC_PREFIX,opensocial.Name.Field.GIVEN_NAME,opensocial.Name.Field.FAMILY_NAME,opensocial.Name.Field.HONORIFIC_SUFFIX,opensocial.Name.Field.ADDITIONAL_NAME];
opensocial.Person.prototype.getDisplayName=function(){var B=this.getField(opensocial.Person.Field.NAME);
if(B){var E=B.getField(opensocial.Name.Field.UNSTRUCTURED);
if(E){return E
}var D="";
for(var C=0;
C<ORDERED_NAME_FIELDS_.length;
C++){var A=B.getField(ORDERED_NAME_FIELDS_[C]);
if(A){D+=A+" "
}}return D.replace(/^\s+|\s+$/g,"")
}return this.getField(opensocial.Person.Field.NICKNAME)
};
opensocial.Person.prototype.getField=function(A,B){return opensocial.Container.getField(this.fields_,A,B)
};
opensocial.Person.prototype.getAppData=function(A){};
opensocial.Person.prototype.isViewer=function(){return !!this.isViewer_
};
opensocial.Person.prototype.isOwner=function(){return !!this.isOwner_
};;
opensocial.Phone=function(A){this.fields_=A||{}
};
opensocial.Phone.Field={TYPE:"type",NUMBER:"number"};
opensocial.Phone.prototype.getField=function(A,B){return opensocial.Container.getField(this.fields_,A,B)
};;
opensocial.ResponseItem=function(A,C,B,D){this.originalDataRequest_=A;
this.data_=C;
this.errorCode_=B;
this.errorMessage_=D
};
opensocial.ResponseItem.prototype.hadError=function(){return !!this.errorCode_
};
opensocial.ResponseItem.Error={NOT_IMPLEMENTED:"notImplemented",UNAUTHORIZED:"unauthorized",FORBIDDEN:"forbidden",BAD_REQUEST:"badRequest",INTERNAL_ERROR:"internalError",LIMIT_EXCEEDED:"limitExceeded"};
opensocial.ResponseItem.prototype.getErrorCode=function(){return this.errorCode_
};
opensocial.ResponseItem.prototype.getErrorMessage=function(){return this.errorMessage_
};
opensocial.ResponseItem.prototype.getOriginalDataRequest=function(){return this.originalDataRequest_
};
opensocial.ResponseItem.prototype.getData=function(){return this.data_
};;
opensocial.Url=function(A){this.fields_=A||{}
};
opensocial.Url.Field={TYPE:"type",LINK_TEXT:"linkText",ADDRESS:"address"};
opensocial.Url.prototype.getField=function(A,B){return opensocial.Container.getField(this.fields_,A,B)
};;
var FieldTranslations={};
FieldTranslations.translateServerPersonToJsPerson=function(H,B){if(H.emails){for(var E=0;
E<H.emails.length;
E++){H.emails[E].address=H.emails[E].value
}}if(H.phoneNumbers){for(var A=0;
A<H.phoneNumbers.length;
A++){H.phoneNumbers[A].number=H.phoneNumbers[A].value
}}if(H.birthday){H.dateOfBirth=H.birthday
}if(H.utcOffset){H.timeZone=H.utcOffset
}if(H.addresses){for(var D=0;
D<H.addresses.length;
D++){H.addresses[D].unstructuredAddress=H.addresses[D].formatted
}}if(H.gender){var F=H.gender=="male"?"MALE":(H.gender=="female")?"FEMALE":null;
H.gender={key:F,displayValue:H.gender}
}FieldTranslations.translateUrlJson(H.profileSong);
FieldTranslations.translateUrlJson(H.profileVideo);
if(H.urls){for(var G=0;
G<H.urls.length;
G++){FieldTranslations.translateUrlJson(H.urls[G])
}}FieldTranslations.translateEnumJson(H.drinker);
FieldTranslations.translateEnumJson(H.lookingFor);
FieldTranslations.translateEnumJson(H.networkPresence);
FieldTranslations.translateEnumJson(H.smoker);
if(H.organizations){H.jobs=[];
H.schools=[];
for(var C=0;
C<H.organizations.length;
C++){var I=H.organizations[C];
if(I.type=="job"){H.jobs.push(I)
}else{if(I.type=="school"){H.schools.push(I)
}}}}if(H.name){H.name.unstructured=H.name.formatted
}if(H.appData){H.appData=opensocial.Container.escape(H.appData,B,true)
}};
FieldTranslations.translateEnumJson=function(A){if(A){A.key=A.value
}};
FieldTranslations.translateUrlJson=function(A){if(A){A.address=A.value
}};
FieldTranslations.translateJsPersonFieldsToServerFields=function(A){for(var B=0;
B<A.length;
B++){if(A[B]=="dateOfBirth"){A[B]="birthday"
}else{if(A[B]=="timeZone"){A[B]="utcOffset"
}else{if(A[B]=="jobs"){A[B]="organizations"
}else{if(A[B]=="schools"){A[B]="organizations"
}}}}}A.push("id");
A.push("displayName")
};
FieldTranslations.translateIsoStringToDate=function(A){var C="([0-9]{4})(-([0-9]{2})(-([0-9]{2})(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(.([0-9]+))?)?(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?";
var E=A.match(new RegExp(C));
var D=0;
var B=new Date(E[1],0,1);
if(E[3]){B.setMonth(E[3]-1)
}if(E[5]){B.setDate(E[5])
}if(E[7]){B.setHours(E[7])
}if(E[8]){B.setMinutes(E[8])
}if(E[10]){B.setSeconds(E[10])
}if(E[12]){B.setMilliseconds(Number("0."+E[12])*1000)
}if(E[14]){D=(Number(E[16])*60)+Number(E[17]);
D*=((E[15]=="-")?1:-1)
}D-=B.getTimezoneOffset();
time=(Number(B)+(D*60*1000));
return new Date(Number(time))
};
FieldTranslations.addAppDataAsProfileFields=function(D){if(D){if(D.appData){var A=D.appData;
if(typeof A==="string"){A=[A]
}var C=D.profileDetail||[];
for(var B=0;
B<A.length;
B++){if(A[B]==="*"){C.push("appData")
}else{C.push("appData."+A[B])
}}D.appData=A
}}};;
var JsonActivity=function(A,B){A=A||{};
if(!B){JsonActivity.constructArrayObject(A,"mediaItems",JsonMediaItem)
}opensocial.Activity.call(this,A)
};
JsonActivity.inherits(opensocial.Activity);
JsonActivity.prototype.toJsonObject=function(){var C=JsonActivity.copyFields(this.fields_);
var D=C.mediaItems||[];
var A=[];
for(var B=0;
B<D.length;
B++){A[B]=D[B].toJsonObject()
}C.mediaItems=A;
return C
};
var JsonMediaItem=function(A){opensocial.MediaItem.call(this,A.mimeType,A.url,A)
};
JsonMediaItem.inherits(opensocial.MediaItem);
JsonMediaItem.prototype.toJsonObject=function(){return JsonActivity.copyFields(this.fields_)
};
JsonActivity.constructArrayObject=function(D,E,B){var C=D[E];
if(C){for(var A=0;
A<C.length;
A++){C[A]=new B(C[A])
}}};
JsonActivity.copyFields=function(A){var B={};
for(var C in A){B[C]=A[C]
}return B
};;
var JsonPerson=function(A){A=A||{};
JsonPerson.constructObject(A,"bodyType",opensocial.BodyType);
JsonPerson.constructObject(A,"currentLocation",opensocial.Address);
JsonPerson.constructObject(A,"name",opensocial.Name);
JsonPerson.constructObject(A,"profileSong",opensocial.Url);
JsonPerson.constructObject(A,"profileVideo",opensocial.Url);
JsonPerson.constructDate(A,"dateOfBirth");
JsonPerson.constructArrayObject(A,"addresses",opensocial.Address);
JsonPerson.constructArrayObject(A,"emails",opensocial.Email);
JsonPerson.constructArrayObject(A,"jobs",opensocial.Organization);
JsonPerson.constructArrayObject(A,"phoneNumbers",opensocial.Phone);
JsonPerson.constructArrayObject(A,"schools",opensocial.Organization);
JsonPerson.constructArrayObject(A,"urls",opensocial.Url);
JsonPerson.constructEnum(A,"gender");
JsonPerson.constructEnum(A,"smoker");
JsonPerson.constructEnum(A,"drinker");
JsonPerson.constructEnum(A,"networkPresence");
JsonPerson.constructEnumArray(A,"lookingFor");
opensocial.Person.call(this,A,A.isOwner,A.isViewer)
};
JsonPerson.inherits(opensocial.Person);
JsonPerson.constructEnum=function(B,C){var A=B[C];
if(A){B[C]=new opensocial.Enum(A.key,A.displayValue)
}};
JsonPerson.constructEnumArray=function(C,D){var B=C[D];
if(B){for(var A=0;
A<B.length;
A++){B[A]=new opensocial.Enum(B[A].key,B[A].displayValue)
}}};
JsonPerson.constructObject=function(C,D,A){var B=C[D];
if(B){C[D]=new A(B)
}};
JsonPerson.constructDate=function(B,C){var A=B[C];
if(A){B[C]=FieldTranslations.translateIsoStringToDate(A)
}};
JsonPerson.constructArrayObject=function(D,E,B){var C=D[E];
if(C){for(var A=0;
A<C.length;
A++){C[A]=new B(C[A])
}}};
JsonPerson.prototype.getDisplayName=function(){return this.getField("displayName")
};
JsonPerson.prototype.getAppData=function(B){var A=this.getField("appData");
return A&&A[B]
};;
var JsonMessageCollection=function(A){A=A||{};
opensocial.MessageCollection.call(this,A)
};
JsonMessageCollection.inherits(opensocial.MessageCollection);
JsonMessageCollection.prototype.toJsonObject=function(){return JsonMessageCollection.copyFields(this.fields_)
};
JsonMessageCollection.copyFields=function(A){var B={};
for(var C in A){B[C]=A[C]
}return B
};;
var JsonMessage=function(A,B){B=B||{};
opensocial.Message.call(this,A,B)
};
JsonMessage.inherits(opensocial.Message);
JsonMessage.prototype.toJsonObject=function(){return JsonMessage.copyFields(this.fields_)
};
JsonMessage.copyFields=function(A){var B={};
for(var C in A){B[C]=A[C]
}return B
};;
var JsonRpcContainer=function(E,G,F){opensocial.Container.call(this);
var D={};
for(var B in F){if(F.hasOwnProperty(B)){D[B]={};
for(var C=0;
C<F[B].length;
C++){var A=F[B][C];
D[B][A]=true
}}}this.environment_=new opensocial.Environment(G,D);
this.baseUrl_=E;
this.securityToken_=shindig.auth.getSecurityToken();
gadgets.rpc.register("shindig.requestShareApp_callback",JsonRpcContainer.requestShareAppCallback_);
gadgets.rpc.register("shindig.requestPayment_callback",JsonRpcContainer.requestPaymentCallback_)
};
(function(){var A={};
JsonRpcContainer.inherits(opensocial.Container);
var B=function(D,C){this.rpc=D;
this.processData=C||function(E){return E
};
this.processResponse=function(E,H,G,F){var I=G?JsonRpcContainer.translateHttpError("Error "+G.code):null;
return new opensocial.ResponseItem(E,G?null:this.processData(H),I,F)
}
};
JsonRpcContainer.prototype.getEnvironment=function(){return this.environment_
};
JsonRpcContainer.prototype.requestPayment=function(C,E,D){if(!C){if(D){D(new opensocial.ResponseItem(null,C,opensocial.Payment.ResponseCode.MALFORMED_REQUEST,"Payment object is undefined."))
}return 
}var F="cId_"+Math.random();
A[F]=D;
gadgets.rpc.call("..","shindig.requestPayment",null,F,C.fields_,E)
};
JsonRpcContainer.requestPaymentCallback_=function(E,G){callback=A[E];
if(callback){var F=opensocial.Payment.ResponseCode[G[opensocial.Payment.Field.RESPONSE_CODE]];
G[opensocial.Payment.Field.RESPONSE_CODE]=F;
var C=new opensocial.Payment(G);
var D=new opensocial.ResponseItem(null,C,(F==opensocial.Payment.ResponseCode.OK?null:F),C.getField(opensocial.Payment.Field.RESPONSE_MESSAGE));
callback(D)
}};
JsonRpcContainer.prototype.requestShareApp=function(G,I,D,E){var F="cId_"+Math.random();
A[F]=D;
var C=gadgets.util.unescapeString(I.getField(opensocial.Message.Field.BODY));
if(!C||C.length===0){var H=gadgets.util.unescapeString(I.getField(opensocial.Message.Field.BODY_ID));
C=gadgets.Prefs.getMsg(H)
}gadgets.rpc.call("..","shindig.requestShareApp",null,F,G,C)
};
JsonRpcContainer.requestShareAppCallback_=function(G,H,D,F){callback=A[G];
if(callback){A[G]=null;
var E=null;
if(F){E={recipientIds:F}
}var C=new opensocial.ResponseItem(null,E,D);
callback(C)
}};
JsonRpcContainer.prototype.requestCreateActivity=function(F,D,C){C=C||function(){};
var E=opensocial.newDataRequest();
var G=new opensocial.IdSpec({userId:"VIEWER"});
E.add(this.newCreateActivityRequest(G,F),"key");
E.send(function(H){C(H.get("key"))
})
};
JsonRpcContainer.prototype.requestData=function(H,L){L=L||function(){};
var F=H.getRequestObjects();
var J=F.length;
if(J===0){window.setTimeout(function(){L(new opensocial.DataResponse({},true))
},0);
return 
}var M=new Array(J);
for(var G=0;
G<J;
G++){var K=F[G];
M[G]=K.request.rpc;
if(K.key){M[G].id=K.key
}}var D=function(Y){if(Y.errors[0]){JsonRpcContainer.generateErrorResponse(Y,F,L);
return 
}Y=Y.data;
var O=false;
var X={};
for(var S=0;
S<Y.length;
S++){Y[Y[S].id]=Y[S]
}for(var P=0;
P<F.length;
P++){var R=F[P];
var Q=Y[P];
if(R.key&&Q.id!==R.key){throw"Request key("+R.key+") and response id("+Q.id+") do not match"
}var N=Q.data;
var V=Q.error;
var U="";
if(V){U=V.message
}var T=R.request.processResponse(R.request,N,V,U);
O=O||T.hadError();
if(R.key){X[R.key]=T
}}var W=new opensocial.DataResponse(X,O);
L(W)
};
var I={CONTENT_TYPE:"JSON",METHOD:"POST",AUTHORIZATION:"SIGNED",POST_DATA:gadgets.json.stringify(M)};
var C=[this.baseUrl_,"/rpc"];
var E=shindig.auth.getSecurityToken();
if(E){C.push("?st=",encodeURIComponent(E))
}this.sendRequest(C.join(""),D,I,"application/json")
};
JsonRpcContainer.prototype.sendRequest=function(C,F,D,E){gadgets.io.makeNonProxiedRequest(C,F,D,E)
};
JsonRpcContainer.generateErrorResponse=function(C,F,H){var D=JsonRpcContainer.translateHttpError(C.errors[0]||C.data.error)||opensocial.ResponseItem.Error.INTERNAL_ERROR;
var G={};
for(var E=0;
E<F.length;
E++){G[F[E].key]=new opensocial.ResponseItem(F[E].request,null,D)
}H(new opensocial.DataResponse(G,true))
};
JsonRpcContainer.translateHttpError=function(C){if(C==="Error 501"){return opensocial.ResponseItem.Error.NOT_IMPLEMENTED
}else{if(C==="Error 401"){return opensocial.ResponseItem.Error.UNAUTHORIZED
}else{if(C==="Error 403"){return opensocial.ResponseItem.Error.FORBIDDEN
}else{if(C==="Error 400"){return opensocial.ResponseItem.Error.BAD_REQUEST
}else{if(C==="Error 500"){return opensocial.ResponseItem.Error.INTERNAL_ERROR
}else{if(C==="Error 404"){return opensocial.ResponseItem.Error.BAD_REQUEST
}else{if(C==="Error 417"){return opensocial.ResponseItem.Error.LIMIT_EXCEEDED
}}}}}}}};
JsonRpcContainer.prototype.makeIdSpec=function(C){return new opensocial.IdSpec({userId:C})
};
JsonRpcContainer.prototype.translateIdSpec=function(C){var F=C.getField("userId");
var E=C.getField("groupId");
if(!opensocial.Container.isArray(F)){F=[F]
}for(var D=0;
D<F.length;
D++){if(F[D]==="OWNER"){F[D]="@owner"
}else{if(F[D]==="VIEWER"){F[D]="@viewer"
}}}if(E==="FRIENDS"){E="@friends"
}else{if(E==="SELF"||!E){E="@self"
}}return{userId:F,groupId:E}
};
JsonRpcContainer.prototype.newFetchPersonRequest=function(F,E){var C=this.newFetchPeopleRequest(this.makeIdSpec(F),E);
var D=this;
return new B(C.rpc,function(G){return D.createPersonFromJson(G,E)
})
};
JsonRpcContainer.prototype.newFetchPeopleRequest=function(C,E){var F={method:"people.get"};
F.params=this.translateIdSpec(C);
FieldTranslations.addAppDataAsProfileFields(E);
if(E.profileDetail){FieldTranslations.translateJsPersonFieldsToServerFields(E.profileDetail);
F.params.fields=E.profileDetail
}if(E.first){F.params.startIndex=E.first
}if(E.max){F.params.count=E.max
}if(E.sortOrder){F.params.sortBy=E.sortOrder
}if(E.filter){F.params.filterBy=E.filter
}if(C.getField("networkDistance")){F.params.networkDistance=C.getField("networkDistance")
}var D=this;
return new B(F,function(J){var I;
if(J.list){I=J.list
}else{I=[J]
}var H=[];
for(var G=0;
G<I.length;
G++){H.push(D.createPersonFromJson(I[G],E))
}return new opensocial.Collection(H,J.startIndex,J.totalResults)
})
};
JsonRpcContainer.prototype.createPersonFromJson=function(C,D){FieldTranslations.translateServerPersonToJsPerson(C,D);
return new JsonPerson(C)
};
JsonRpcContainer.prototype.getFieldsList=function(C){if(this.hasNoKeys(C)||this.isWildcardKey(C[0])){return[]
}else{return C
}};
JsonRpcContainer.prototype.hasNoKeys=function(C){return !C||C.length===0
};
JsonRpcContainer.prototype.isWildcardKey=function(C){return C==="*"
};
JsonRpcContainer.prototype.newFetchPersonAppDataRequest=function(C,E,D){var F={method:"appdata.get"};
F.params=this.translateIdSpec(C);
F.params.appId="@app";
F.params.fields=this.getFieldsList(E);
if(C.getField("networkDistance")){F.params.networkDistance=C.getField("networkDistance")
}return new B(F,function(G){return opensocial.Container.escape(G,D,true)
})
};
JsonRpcContainer.prototype.newUpdatePersonAppDataRequest=function(C,D){var E={method:"appdata.update"};
E.params={userId:["@viewer"],groupId:"@self"};
E.params.appId="@app";
E.params.data={};
E.params.data[C]=D;
E.params.fields=C;
return new B(E)
};
JsonRpcContainer.prototype.newRemovePersonAppDataRequest=function(C){var D={method:"appdata.delete"};
D.params={userId:["@viewer"],groupId:"@self"};
D.params.appId="@app";
D.params.fields=this.getFieldsList(C);
return new B(D)
};
JsonRpcContainer.prototype.newFetchActivitiesRequest=function(C,D){var E={method:"activities.get"};
E.params=this.translateIdSpec(C);
E.params.appId="@app";
if(C.getField("networkDistance")){E.params.networkDistance=C.getField("networkDistance")
}return new B(E,function(G){G=G.list;
var H=[];
for(var F=0;
F<G.length;
F++){H.push(new JsonActivity(G[F]))
}return new opensocial.Collection(H)
})
};
JsonRpcContainer.prototype.newActivity=function(C){return new JsonActivity(C,true)
};
JsonRpcContainer.prototype.newMediaItem=function(E,C,D){D=D||{};
D.mimeType=E;
D.url=C;
return new JsonMediaItem(D)
};
JsonRpcContainer.prototype.newCreateActivityRequest=function(C,D){var E={method:"activities.create"};
E.params=this.translateIdSpec(C);
E.params.appId="@app";
if(C.getField("networkDistance")){E.params.networkDistance=C.getField("networkDistance")
}E.params.activity=D.toJsonObject();
return new B(E)
}
})();
JsonRpcContainer.prototype.newMessage=function(A,B){return new JsonMessage(A,B)
};
JsonRpcContainer.prototype.newMessageCollection=function(A){return new JsonMessageCollection(A)
};
JsonRpcContainer.prototype.newFetchMessageCollectionsRequest=function(A,B){var C={method:"messages.get"};
C.params=this.translateIdSpec(A);
return new JsonRpcRequestItem(C,function(E){E=E.list;
var F=[];
for(var D=0;
D<E.length;
D++){F.push(new JsonMessageCollection(E[D]))
}return new opensocial.Collection(F)
})
};
JsonRpcContainer.prototype.newFetchMessagesRequest=function(A,C,B){var D={method:"messages.get"};
D.params=this.translateIdSpec(A);
D.params.msgCollId=C;
return new JsonRpcRequestItem(D,function(G){G=G.list;
var F=[];
for(var E=0;
E<G.length;
E++){F.push(new JsonMessage(G[E]))
}return new opensocial.Collection(F)
})
};
JsonRpcContainer.prototype.newFetchPaymentRequest=function(B,A){throw new Error("Not implemented.")
};
var JsonRpcRequestItem=function(B,A){this.rpc=B;
this.processData=A||function(C){return C
};
this.processResponse=function(C,F,E,D){var G=E?JsonRpcContainer.translateHttpError("Error "+E.code):null;
return new opensocial.ResponseItem(C,E?null:this.processData(F),G,D)
}
};;
var gadgets=gadgets||{};
gadgets.views=function(){var E=null;
var B={};
var D={};
function A(H){if(!H){H=window.event
}var G;
if(H.target){G=H.target
}else{if(H.srcElement){G=H.srcElement
}}if(G.nodeType===3){G=G.parentNode
}if(G.nodeName.toLowerCase()==="a"){var F=G.getAttribute("href");
if(F&&F[0]!=="#"&&F.indexOf("://")===-1){gadgets.views.requestNavigateTo(E,F);
if(H.stopPropagation){H.stopPropagation()
}if(H.preventDefault){H.preventDefault()
}H.returnValue=false;
H.cancelBubble=true;
return false
}}return false
}function C(I){var H=I.views||{};
for(var L in H){if(H.hasOwnProperty(L)){if(L!="rewriteLinks"){var M=H[L];
if(!M){continue
}B[L]=new gadgets.views.View(L,M.isOnlyVisible);
var F=M.aliases||[];
for(var K=0,J;
(J=F[K]);
++K){B[J]=new gadgets.views.View(L,M.isOnlyVisible)
}}}}var G=gadgets.util.getUrlParameters();
if(G["view-params"]){D=gadgets.json.parse(G["view-params"])||D
}if(G.st){D.Hi5AuthToken=G.st
}E=B[G.view]||B["default"];
if(H.rewriteLinks){if(document.attachEvent){document.attachEvent("onclick",A)
}else{document.addEventListener("click",A,false)
}}}gadgets.config.register("views",null,C);
return{bind:function(U,S){if(typeof U!=="string"){throw new Error("Invalid urlTemplate")
}if(typeof S!=="object"){throw new Error("Invalid environment")
}var Q=/^([a-zA-Z0-9][a-zA-Z0-9_\.\-]*)(=([a-zA-Z0-9\-\._~]|(%[0-9a-fA-F]{2}))*)?$/,W=new RegExp("\\{([^}]*)\\}","g"),T=/^-([a-zA-Z]+)\|([^|]*)\|(.+)$/,M=[],P=0,K,J,H,O,L,G,N,R;
function I(Y,X){return S.hasOwnProperty(Y)?S[Y]:X
}function F(X){if(!(J=X.match(Q))){throw new Error("Invalid variable : "+X)
}}function V(b,X,a){var Y,Z=b.split(",");
for(Y=0;
Y<Z.length;
++Y){F(Z[Y]);
if(a(X,I(J[1]),J[1])){break
}}return X
}while((K=W.exec(U))){M.push(U.substring(P,K.index));
P=W.lastIndex;
if((J=K[1].match(Q))){H=J[1];
O=J[2]?J[2].substr(1):"";
M.push(I(H,O))
}else{if((J=K[1].match(T))){L=J[1];
G=J[2];
N=J[3];
R=0;
switch(L){case"neg":R=1;
case"opt":if(V(N,{flag:R},function(Y,X){if(typeof X!=="undefined"&&(typeof X!=="object"||X.length)){Y.flag=!Y.flag;
return 1
}}).flag){M.push(G)
}break;
case"join":M.push(V(N,[],function(Z,Y,X){if(typeof Y==="string"){Z.push(X+"="+Y)
}}).join(G));
break;
case"list":F(N);
value=I(J[1]);
if(typeof value==="object"&&typeof value.join==="function"){M.push(value.join(G))
}break;
case"prefix":R=1;
case"suffix":F(N);
value=I(J[1],J[2]&&J[2].substr(1));
if(typeof value==="string"){M.push(R?G+value:value+G)
}else{if(typeof value==="object"&&typeof value.join==="function"){M.push(R?G+value.join(G):value.join(G)+G)
}}break;
default:throw new Error("Invalid operator : "+L)
}}else{throw new Error("Invalid syntax : "+K[0])
}}}M.push(U.substr(P));
return M.join("")
},requestNavigateTo:function(F,H,G){if(typeof F!=="string"){F=F.getName()
}gadgets.rpc.call(null,"requestNavigateTo",null,F,H,G)
},getCurrentView:function(){return E
},getSupportedViews:function(){return B
},getParams:function(){return D
}}
}();
gadgets.views.View=function(A,B){this.name_=A;
this.isOnlyVisible_=!!B
};
gadgets.views.View.prototype.getName=function(){return this.name_
};
gadgets.views.View.prototype.getUrlTemplate=function(){return gadgets.config&&gadgets.config.views&&gadgets.config.views[this.name_]&&gadgets.config.views[this.name_].urlTemplate
};
gadgets.views.View.prototype.bind=function(A){return gadgets.views.bind(this.getUrlTemplate(),A)
};
gadgets.views.View.prototype.isOnlyVisibleGadget=function(){return this.isOnlyVisible_
};
gadgets.views.ViewType=gadgets.util.makeEnum(["CANVAS","HOME","PREVIEW","PROFILE","FULL_PAGE","DASHBOARD","POPUP"]);;
var gadgets=gadgets||{};
gadgets.skins=function(){var A={};
var B={properties:gadgets.config.ExistsValidator};
gadgets.config.register("skins",B,function(C){A=C.skins.properties
});
return{init:function(C){A=C
},getProperty:function(C){return A[C]||""
}}
}();
gadgets.skins.Property=gadgets.util.makeEnum(["BG_IMAGE","BG_COLOR","FONT_COLOR","BG_POSITION","BG_REPEAT","ANCHOR_COLOR"]);;
var Hi5Container=function(A,C,B){JsonRpcContainer.call(this,A,C,B)
};
Hi5Container.inherits(JsonRpcContainer);
opensocial.Enum.Presence={ONLINE:"ONLINE",OFFLINE:"OFFLINE",DND:"DND"};
Hi5Container.prototype.init=function(){var B=gadgets.util.getUrlParameters().st;
this.params={Hi5AuthToken:B};
var C=gadgets.json.parse(unescape(gadgets.util.getUrlParameters().hi5));
this.viewer=new opensocial.Person(C.viewer);
this.owner=new opensocial.Person(C.owner);
var A={};
if(C.bg_color){A.BG_COLOR=C.bg_color
}if(C.bg_image){A.BG_IMAGE=C.bg_image
}if(C.bg_position){A.BG_POSITION=C.bg_position
}if(C.bg_repeat){A.BG_REPEAT=C.bg_repeat
}if(C.font_color){A.FONT_COLOR=C.font_color
}if(C.anchor_color){A.ANCHOR_COLOR=C.anchor_color
}gadgets.skins.init(A)
};
Hi5Container.prototype.requestCreateActivity=function(D,R,I){if(!I){I=function(){}
}if(gadgets.views.getCurrentView().getName()!="canvas"){I(this.newResponseItem(null,null,opensocial.ResponseItem.Error.NOT_IMPLEMENTED,"requestCreateActivity is only allowed from the canvas view"));
return 
}var F=D.getField(opensocial.Activity.Field.STREAM_FAVICON_URL);
var T=D.getField(opensocial.Activity.Field.TITLE);
var L=D.getField(opensocial.Activity.Field.TITLE_ID);
var J=D.getField(opensocial.Activity.Field.BODY);
var S=D.getField(opensocial.Activity.Field.BODY_ID);
var E=D.getField(opensocial.Activity.Field.URL);
var Q=(T&&T!="");
Q=Q||(L&&L!="");
if(!Q){I(this.newResponseItem(null,null,opensocial.ResponseItem.Error.BAD_REQUEST,"requestCreateActivity requires a TITLE or TITLE_ID field"));
return 
}if(!T){T=""
}if(!L){L=""
}if(!J){J=""
}if(!S){S=""
}if(!F){F=""
}if(!E){E=""
}var P=this;
var A=D.getField(opensocial.Activity.Field.MEDIA_ITEMS);
var H="";
if(A!=null){for(var M=0;
M<A.length;
M++){if(A[M].getField(opensocial.MediaItem.Field.TYPE)!="image"){I(P.newResponseItem(null,null,opensocial.ResponseItem.Error.NOT_IMPLEMENTED,"requestCreateActivity only supports image media types right now"));
return 
}H+="&img"+(M+1)+"="+encodeURIComponent(A[M].getField(opensocial.MediaItem.Field.URL));
if(A[M].getField(hi5.ActivityMediaItemField.LINK)!=null){H+="&imgLink"+(M+1)+"="+encodeURIComponent(A[M].getField(hi5.ActivityMediaItemField.LINK))
}}}var C=D.getField(opensocial.Activity.Field.TEMPLATE_PARAMETERS);
var G="";
if(C!=null){for(var O in C){var B=C[O];
if(typeof B=="object"){if(B.ID){G+=O+".Id:"+B.Id+","
}if(B.DisplayName){G+=O+".DisplayName:"+B.DisplayName+",";
G+=O+":"+B.DisplayName+","
}if(B.ProfileUrl){G+=O+".ProfileUrl:"+B.ProfileUrl+","
}}else{G+=O+":"+B+","
}}}var K="http://"+document.location.host;
var N=K+"/json/friendUpdates/friendUpdate?iconUrl="+encodeURIComponent(F)+"&title="+encodeURIComponent(T)+"&titleId="+encodeURIComponent(L)+"&body="+encodeURIComponent(J)+"&bodyId="+encodeURIComponent(S)+"&url="+encodeURIComponent(E)+H+"&params="+encodeURIComponent(G)+"&Hi5AuthToken="+this.params.Hi5AuthToken+"&callback=?";
this.sendRequest(N,function(U){if(U&&U["hi5.activity_response"]){if(U["hi5.activity_response"]["hi5.error_message"]){I(P.newResponseItem(null,null,opensocial.ResponseItem.Error.INTERNAL_ERROR,U["hi5.activity_response"]["hi5.error_message"]))
}else{if(U["hi5.activity_response"]["hi5.success"]){I(P.newResponseItem(null,U["hi5.activity_response"]["hi5.success"],null,null))
}}}else{I(P.newResponseItem(null,null,opensocial.ResponseItem.Error.INTERNAL_ERROR,"Unknown Error"))
}},{METHOD:"GET"},"application/json")
};
Hi5Container.prototype.requestSendMessage=function(A,L,H,B){if(!H){H=function(){}
}if(gadgets.views.getCurrentView().getName()!="canvas"){H(this.newResponseItem(null,null,opensocial.ResponseItem.Error.NOT_IMPLEMENTED,"requestSendMessage is only allowed from the canvas view"));
return 
}var J="";
var F="";
if(typeof A=="string"){if(A=="VIEWER_FRIENDS"){H(this.newResponseItem(null,null,opensocial.ResponseItem.Error.NOT_IMPLEMENTED,"requestSendMessage is not allowed to VIEWER_FRIENDS"))
}else{if(A=="OWNER_FRIENDS"){H(this.newResponseItem(null,null,opensocial.ResponseItem.Error.NOT_IMPLEMENTED,"requestSendMessage is only allowed to OWNER_FRIENDS"))
}else{if(A=="VIEWER"){J+="&toIds="+this.viewer.getId();
F=this.viewer.getId();
J+="&friends=false"
}else{if(A=="OWNER"){J+="&toIds="+this.owner.getId();
F=this.owner.getId();
J+="&friends=false"
}else{J+="&toIds="+A;
F=A;
J+="&friends=false"
}}}}A=[];
A.push(F)
}else{if(typeof A=="object"){for(var D=0;
D<A.length;
D++){J+="&toIds="+A[D]
}F=A[0];
J+="&friends=false"
}}if(J==""){H(this.newResponseItem(null,null,opensocial.ResponseItem.Error.BAD_REQUEST,"requestSendMessage requires at least one valid recipient"))
}var I=this;
var E=L.getField(opensocial.Message.Field.BODY);
var K="http://"+document.location.host;
if(L.getField(opensocial.Message.Field.TYPE)==opensocial.Message.Type.NOTIFICATION){this.sendRequest(K+"/json/notifications/send?body="+encodeURIComponent(E)+J+"&Hi5AuthToken="+this.params.Hi5AuthToken+"&callback=?",function(M){if(M&&M["hi5.notification_response"]){if(M["hi5.notification_response"]["hi5.error_message"]){H(I.newResponseItem(null,M,opensocial.ResponseItem.Error.INTERNAL_ERROR,M["hi5.notification_response"]["hi5.error_message"]))
}else{if(M["hi5.notification_response"]["hi5.sent_ids"]){H(I.newResponseItem(null,M["hi5.notification_response"]["hi5.sent_ids"],null,null))
}}}else{H(I.newResponseItem(null,M,opensocial.ResponseItem.Error.INTERNAL_ERROR,"Unknown Error"))
}},{METHOD:"GET"},"application/json")
}else{if(L.getField(opensocial.Message.Field.TYPE)==opensocial.Message.Type.EMAIL){var G=L.getField(opensocial.Message.Field.TITLE);
this.sendRequest(K+"/json/message/sendEmails?title="+encodeURIComponent(G)+"&body="+encodeURIComponent(E)+J+"&Hi5AuthToken="+this.params.Hi5AuthToken+"&callback=?",function(M){if(M&&M["hi5.email_response"]){if(M["hi5.email_response"]["hi5.error_message"]){H(I.newResponseItem(null,M,opensocial.ResponseItem.Error.INTERNAL_ERROR,M["hi5.email_response"]["hi5.error_message"]))
}else{if(M["hi5.email_response"]["hi5.sent_ids"]){H(I.newResponseItem(null,M["hi5.email_response"]["hi5.sent_ids"],null,null))
}}}else{H(I.newResponseItem(null,M,opensocial.ResponseItem.Error.INTERNAL_ERROR,"Unknown Error"))
}},{METHOD:"GET"},"application/json")
}else{if(L.getField(opensocial.Message.Field.TYPE)==opensocial.Message.Type.PRIVATE_MESSAGE){var C={};
C.METHOD="POST";
L.setField("recipients",A);
C.POST_DATA=JSON.stringify(L.toJsonObject());
this.sendRequest(K+"/social/rest/messages/"+F+"/@outbox?st="+this.params.Hi5AuthToken,H,C,"application/json")
}else{if(L.getField(opensocial.Message.Field.TYPE)==opensocial.Message.Type.PUBLIC_MESSAGE){var C={};
C.METHOD="POST";
L.setField("recipients",A);
C.POST_DATA=JSON.stringify(L.toJsonObject());
this.sendRequest(K+"/social/rest/messages/"+F+"/profile?st="+this.params.Hi5AuthToken,H,C,"application/json")
}}}}};
Hi5Container.prototype.hasPermission=function(A){var B=gadgets.json.parse(unescape(gadgets.util.getUrlParameters().perms));
if(B){if(B[A]){return true
}}return A==opensocial.Permission.VIEWER
};
Hi5Container.prototype.requestShareApp=function(A,D,B,C){if(!A||!D){if(B){B(new opensocial.ResponseItem(null,null,opensocial.ResponseItem.Error.BAD_REQUEST,null))
}return 
}if(gadgets.views.getCurrentView().getName()!="canvas"||A!="VIEWER_FRIENDS"){if(B){B(new opensocial.ResponseItem(null,null,opensocial.ResponseItem.Error.FORBIDDEN,null))
}return 
}var E={};
if(D){if(D.getField){E.reason=D.getField(opensocial.Message.Field.BODY);
E.title=D.getField(opensocial.Message.Field.TITLE)
}else{E.reason=D;
E.title=D
}}if(B){E.opt_callback=B
}gadgets.rpc.call(null,"requestShareApp",null,A,E)
};
Hi5Container.prototype.requestPermission=function(B,C,A){if(gadgets.views.getCurrentView().getName()!="canvas"){if(A){A(this.newResponseItem(null,null,opensocial.ResponseItem.Error.FORBIDDEN,"requestPermission is only allowed from the canvas view"))
}}if(A){A(new opensocial.ResponseItem(null,null,opensocial.ResponseItem.Error.NOT_IMPLEMENTED,null))
}};
Hi5Container.prototype.newAlbumsRequest=function(A,B){var C={method:"albums.get"};
C.params=this.translateIdSpec(A);
C.params.appId="@app";
return new JsonRpcRequestItem(C,function(J){J=J.list;
var F=new Array();
for(var H=0;
H<J.length;
H++){var I=J[H];
var K=new Array();
var L=I.photos;
for(var G=0;
G<L.length;
G++){var D=new hi5.Photo(L[G]);
K.push(D)
}I.photos=new opensocial.Collection(K);
var E=new hi5.Album(I);
F.push(E)
}return new opensocial.Collection(F)
})
};;
var hi5=function(){};
hi5.ActivityMediaItemField={LINK:"hi5.mediaItemLink"};
hi5.PersonField={SMALL_IMG_URL:"hi5.personSmallImg",MEDIUM_IMG_URL:"hi5.personMediumImg",LARGE_IMG_URL:"hi5.personLargeImg",PRESENCE:"networkPresence"};
hi5.SkinsProperty={BG_POSITION:"hi5.bgPosition",BG_REPEAT:"hi5.bgRepeat"};
hi5.newFetchPresenceRequest=function(A,B){return{type:"FETCH_PRESENCE",idSpec:A,params:B}
};
hi5.newFetchStatusRequest=function(A,B){return{type:"FETCH_STATUS",idSpec:A,params:B}
};
hi5.newFetchAlbumsRequest=function(B,A){return opensocial.Container.get().newAlbumsRequest(B,A)
};
hi5.ObjectType={STATUS:"hi5.status",PRESENCE:"hi5.presence",ALBUM:"hi5.album",PHOTO:"hi5.photo"};;

      var requiredConfig = {
        "path": gadgets.config.NonEmptyStringValidator,
        "domain": gadgets.config.NonEmptyStringValidator,
        "enableCaja": gadgets.config.BooleanValidator,
        "supportedFields": gadgets.config.ExistsValidator
      };

      gadgets.config.register("opensocial-0.8", requiredConfig,
        function(config) {
          var configParams = config["opensocial-0.8"];
          var path = configParams.path;
          path = path.replace("%host%", document.location.host);

          ShindigContainer = function() {
            Hi5Container.call(this, path, configParams.domain, configParams.supportedFields);
          };
          ShindigContainer.inherits(Hi5Container);
          var container = new ShindigContainer();
          container.init();
          opensocial.Container.setContainer(container);
      
          ShindigContainer = function() {
            JsonRpcContainer.call(this, path,
            configParams.domain, configParams.supportedFields);
          };
          ShindigContainer.inherits(JsonRpcContainer);
      });
    ;
gadgets.Prefs.prototype.set=function(D,E){if(arguments.length>2){var F={};
for(var C=0,B=arguments.length;
C<B;
C+=2){F[arguments[C]]=arguments[C+1]
}gadgets.Prefs.setInternal_(F)
}else{gadgets.Prefs.setInternal_(D,E)
}var A=[null,"set_pref",null,gadgets.util.getUrlParameters().ifpctok||0].concat(Array.prototype.slice.call(arguments));
gadgets.rpc.call.apply(gadgets.rpc,A)
};
gadgets.Prefs.prototype.setArray=function(C,D){for(var B=0,A=D.length;
B<A;
++B){if(typeof D[B]!=="number"){D[B]=D[B].replace(/\|/g,"%7C")
}}this.set(C,D.join("|"))
};;
