From OpenSocial Directory
<?xml version="1.0" encoding="UTF-8"?>
<Module>
<ModulePrefs title="Emote!" thumbnail="http://apps.rockyou.com/images/opensocial/icons/120x60/emote120.jpg" screenshot="http://img324.rockyou.com/imagehost/8/8625/8625537/8625537_73ffc4e51204085562_m.jpg" author="RockYou!" author_email="support@rockyou.com" description="Bored, Happy, Glum? We've got an ever growing list of emoticons to show off how you feel." author_location="San Mateo, CA" author_affiliation="RockYou!" title_url="http://www.rockyou.com/" directory_title="Emote!" summary="It's your status message on steroids! Show off with a billion icons. (May be less than a billion)" icon="http://apps.rockyou.com/images/opensocial/icons/16x/emote16.gif" height="1000" >
<Require feature="dynamic-height" />
<Require feature="opensocial-0.7" />
<Require feature="views" />
</ModulePrefs>
<Content type="html" view="profile">
<![CDATA[
<!-- Generated Mon Apr 14 13:51:17 PDT 2008 -->
<script src="http://opensocial.rockyou.com/google_apps/common/js/scriptaculous/prototype.js" type="text/javascript"></script><div id='ry-canvas-debug'></div>
<div class='page_skin'>
<div id='debug'></div>
<style>
body {
margin: 0px;
padding: 0px;
}
a.osocial_link {
color:#02679C;
text-decoration:none;
font-family:Verdana,Arial,sans-serif;
font-size: 12px;
}
a.osocial_link:hover {
color:#00344F;
text-decoration:underline;
font-family:Verdana,Arial,sans-serif;
font-size: 12px;
}
div {
font-family:Verdana,Arial,sans-serif;
}
table.profileEmote {
width: 500px;
}
.profileEmoteDetail {
vertical-align: top;
padding: 0px 10px 10px;
}
td.profileEmoteImg {
width: 50px;
}
img.profileEmoteImg {
padding: 3px;
background-color: #FFFFFF;
// border: 1px solid #CCCCCC;
}
.profileEmoteHistory img.profileEmoteImg {
width: 25px;
}
.profileEmoteHistory td.profileEmoteImg {
width: 25px;
}
.profileEmoteHistory .profileEmoteLink {
display: none;
}
.profileEmoteHistory .profileEmoteDetail {
padding: 0px 0px 10px;
}
.profileEmoteText {
color:#444444;
font-size:24px;
}
.profileEmoteHistory .profileEmoteText {
color:#777777;
font-size:11px;
font-weight: bold;
}
.profileEmoteDate, .profileNoteDate {
color:#BABABA;
font-size: 18px;
}
.profileEmoteHistory .profileEmoteDate, .profileEmoteLink {
font-size: 10px;
}
.profileNoteDate {
font-size: 10px;
}
.profileTextarea {
width: 355px;
height: 14px;
}
.profilePostbox {
background:#F7F7F7 none repeat scroll 0%;
border-bottom:1px solid #CCCCCC;
border-top:1px solid #CCCCCC;
padding:3px 8px 4px;
}
.profileNotesHeader, .profileNote {
padding: 5px;
color: #444444;
border-bottom:1px solid #EEEEEE;
}
.profileNotesHeaderBlank {
height: 0px;
padding: 0px;
margin-bottom: 2px;
border-bottom:1px solid #CCCCCC;
}
.profileNotesHeader {
color: #777777;
}
</style>
<table class="profileEmote" style="background-color: #EEEEE" >
<tbody>
<tr>
<td class="profileEmoteImg" valign="top">
<img id='emoteImage' src="http://opensocial.rockyou.com/images/spacer.gif" class="profileEmoteImg" />
</td>
<td class="profileEmoteDetail">
<div class="profileEmoteText" id="emote_text"></div>
<div class="profileEmoteDate" id="posted_time"></div>
<div class="profileEmoteLink"><a href="javascript:goto_canvas_page('create');" class="osocial_link">Set a new Emote</a>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<script type="text/javascript">
Array.prototype.toJSON = null;
</script>
<script type="text/javascript">
var viewer_id;
var owner_id;
var url_params = gadgets.util.getUrlParameters();
viewer_id = url_params["gadgetViewer"];
owner_id = url_params["gadgetOwner"];
function goto_canvas_page(page_name)
{
var all_views = gadgets.views.getSupportedViews();
var canvas_view = all_views["canvas"];
var params = { "pagename" : encodeURIComponent(page_name) };
gadgets.views.requestNavigateTo(canvas_view, params);
}
function ry_debug(intext)
{
document.getElementById('ry-canvas-debug').innerHTML += '<br>'+intext;
}
// Define console.log to be empty if firebug is not available
if (typeof(console) == 'undefined')
console = new Object();
if (typeof(console.log) == 'undefined')
console.log = function() { };
// redefine encodeURIComponent to more closely match PHP's rawurlencode
var origEncodeURIComponent = encodeURIComponent;
encodeURIComponent = function(str) {
var escaped_str = origEncodeURIComponent(str);
escaped_str = escaped_str.replace("'", "%27");
return escaped_str;
};
function i18n_template(template, params)
{
// use prototype's template processing
var t = new Template(template);
return t.evaluate(params);
}
function genericJSONRequest(path, callback, opt_param_str)
{
var params = {};
params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.JSON;
params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.SIGNED;
params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET;
var url = "http://opensocial.rockyou.com/" + path;
// console.log(url);
if (opt_param_str != "undefined" && opt_param_str)
url = url + "?" + opt_param_str;
gadgets.io.makeRequest(url, function(response)
{
if (typeof response.data == "undefined")
{
alert("JSON Error: NO Data");
if (response.errors)
{
alert("Errors from server " + response.errors);
}
return;
}
// console.log(response);
data = response.data;
if (data.success == false)
alert("Debug: JSON call failed, error_code=" + data.error_code + ", error_message " + data.error_message);
else
callback(data);
}, params);
}
function genericJSONPost(path, callback, opt_param_str)
{
var params = {};
params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.JSON;
params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.SIGNED;
params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;
var url = "http://opensocial.rockyou.com/" + path;
if (opt_param_str != "undefined" && opt_param_str)
params[gadgets.io.RequestParameters.POST_DATA] = opt_param_str;
gadgets.io.makeRequest(url, function(response)
{
if (typeof response.data == "undefined")
{
alert("JSON Error: NO Data");
if (response.errors)
{
alert("Errors from server " + response.errors);
}
return;
}
// console.log(response);
data = response.data;
if (data.success == false)
alert("Debug: JSON call failed, error_code=" + data.error_code + ", error_message " + data.error_message);
else
callback(data);
}, params);
}
function postToActivityStream(text, callback, priority, body) {
priority = (typeof(priority) != "undefined") ? priority : opensocial.CreateActivityPriority.LOW;
callback = (typeof(callback) != "undefined") ? callback : defaultActivityCallback;
var params = {};
params[opensocial.Activity.Field.TITLE] = text;
params[opensocial.Activity.Field.BODY] = body;
var activity = opensocial.newActivity(params);
opensocial.requestCreateActivity(activity, priority, callback);
}
function defaultActivityCallback(data) {
//output(data);
}
function ry_debug_response(content, error)
{
ry_debug(content);
debugger;
}
// js equivalent of /includes/trackevent.php
function createTrackEventUrl(event, url, value)
{
if (event == ""){
return url;
}
link = "http://opensocial.rockyou.com/events/track.php?event=" + event;
if ((typeof(value)!="undefined") && (value != ""))
link = link + "&value="+value;
if (url != "")
link = link + "&url=" + encodeURIComponent(url);
return link;
}
// app install tracking
function set_install()
{
// if viewer is not owner we dont even check if this is the first time after installation
if ( owner_id != viewer_id ){
return;
}
// query appdata for the install date
req = opensocial.newDataRequest();
req.add(req.newFetchPersonAppDataRequest("VIEWER","install_date"), "app_data");
req.send(handle_install);
}
function handle_install(data)
{
// debugger;
var do_update = false;
if (data.get("app_data").hadError())
{
do_update = true;
}
else
{
var viewer_data = data.get("app_data").getData();
if ( (viewer_data[viewer_id] == undefined) || (viewer_data[viewer_id].install_date == undefined) ) {
do_update = true;
}
}
if (do_update)
{
genericJSONRequest("google_apps/server/RYAppInstall.php",do_nothing_callback);
// set installation date
var curr_date = new Date();
var data = curr_date.toUTCString();
req = opensocial.newDataRequest();
req.add(req.newUpdatePersonAppDataRequest("VIEWER", "install_date", data), "app_data");
req.send(do_nothing);
}
}
function do_nothing_callback(data){
}
function do_nothing(data){
}
//////////////////
var profile_page = {
// member variables ------------------------------------------------------------------------
owner_name : "",
// page methods ----------------------------------------------------------------------------
init : function()
{
this.loadContainerData();
},
loadEmote : function()
{
genericJSONRequest("google_apps/emote_example/server/getEmotes.php", this.loadEmoteData.bind(this));
},
loadEmoteData : function(response)
{
var data = response.return_data;
if (data != "no_rows")
{
var emote_row = data[0];
this.selectEmotion(emote_row["icon"], emote_row["desc"], emote_row["posted_str"]);
}
else
{
this.selectEmotion("http://www.rockyou.com/images/ryemote/vista/cool.jpg", "ready to Emote!", "recently");
}
},
loadContainerData : function()
{
req = opensocial.newDataRequest();
req.add(req.newFetchPersonRequest('OWNER'), 'owner');
req.send(this.handleContainerData.bind(this));
},
handleContainerData : function(data)
{
// owner data
if (data.get("owner").hadError())
{
alert("no data");
var disp_name = "User";
}
else
{
var owner_data = data.get("owner").getData();
// var_dump(owner_data);
this.owner_name = owner_data.getDisplayName();
var owner_id = owner_data.getId();
this.loadEmote();
}
},
selectEmotion : function(icon, desc, posted_str)
{
document.getElementById('emote_text').innerHTML = i18n_template('<span id="emotename">#{name}</span> is <span style="font-weight:bold" id="emoteText">#{emote_text}</span>', { name : this.owner_name, emote_text : desc });
document.getElementById('emoteImage').src = icon;
if (typeof(posted_str) == "undefined" || posted_str.length == 0)
posted_str = "several seconds";
document.getElementById('posted_time').innerHTML = i18n_template('Updated #{posted} ago', { posted : posted_str });
// set appropriate page height
gadgets.window.adjustHeight();
}
}
gadgets.util.registerOnLoadHandler(profile_page.init.bind(profile_page));
</script>
]]>
</Content>
<Content type="html" view="canvas">
<![CDATA[
<!-- Generated Mon Apr 14 13:51:17 PDT 2008 -->
<div id='ry-canvas-debug'></div>
<script src="http://opensocial.rockyou.com/google_apps/common/js/scriptaculous/prototype.js" type="text/javascript"></script>
<link href="http://opensocial.rockyou.com/google_apps/common/friendselector.css?v=20080403" rel="stylesheet" type="text/css"><script type="text/javascript">
Array.prototype.toJSON = null;
</script>
<div id='canvas-create-id' style='display: none;'>
<link href="http://www.rockyou.com/google_apps/emote_example/view/style/common.css" rel="stylesheet" type="text/css">
<link href="http://www.rockyou.com/google_apps/emote_example/view/style/view.css" rel="stylesheet" type="text/css">
<div id="main_body">
<br />
<div id="nav_links">
<a class="owner-only" href="javascript:goto_canvas_page('create');" style="display:none;font-family:Verdana,arial,sans-serif;font-weight:bold;color:#444444;">Emote Again!</a><span class="owner-only" style="display:none;"> | </span>
<a href="javascript:goto_canvas_page('history');" style="font-family:Verdana,arial,sans-serif;font-weight:bold;">Past Emotes</a> |
<a href="javascript:goto_canvas_page('friends');" style="font-family:Verdana,arial,sans-serif;font-weight:bold;">Friends' Emotes</a>
</div>
<div style="border-bottom:medium solid #E7E7E7;width:750px;">
</div>
<br />
<table>
<tr>
<td>
<div style="width:750px;">
<b class="gray_rounded">
<b class="gray_rounded1"><b></b></b>
<b class="gray_rounded2"><b></b></b>
<b class="gray_rounded3"></b>
<b class="gray_rounded4"></b>
<b class="gray_rounded5"></b></b>
<div class="gray_roundedfg">
<table class="emotebox" cellspacing="10">
<tr>
<td id="currEmotion" rowspan="2">
<center>
<img src="http://www.rockyou.com/google_apps/emote_example/view/img/missing.gif" id="currEmoImg" class="emoImg"/><br/>
</center>
</td>
<td class="emoteInput">
<span class="emoText">I am </span><input type="text" style="width: 330px" class="emoText" id="currEmoText" value="Happy!" /><br>
<span style="font-size: 14px;float: left;margin-top: 5px;">Choose an emotion below to show how you're feeling!</span>
</td>
<td class="emoteInput">
<input type="hidden" id="emotionid" value="">
<input type="hidden" id="emoset" value="">
<input type="submit" id="submitEmotion" class="submitbtn" onClick="thispage.SubmitEmote()" value="Emote!" alt="Click me when you're finished!" />
</td>
</tr>
</table>
</div>
<b class="gray_rounded">
<b class="gray_rounded5"></b>
<b class="gray_rounded4"></b>
<b class="gray_rounded3"></b>
<b class="gray_rounded2"><b></b></b>
<b class="gray_rounded1"><b></b></b></b>
</div>
</td>
</tr>
</table>
<div>
<br/>
<table>
<tr>
<td>
<div style="width:750px;">
<b class="gray_rounded">
<b class="gray_rounded1"><b></b></b>
<b class="gray_rounded2"><b></b></b>
<b class="gray_rounded3"></b>
<b class="gray_rounded4"></b>
<b class="gray_rounded5"></b></b>
<div class="gray_roundedfg">
<div class="title-text">Choose an emotion set! (Click to select)</div>
<div id='emotionsets' style="width:700px; height:90px">Choose a Set</div>
<div> </div>
</div>
<b class="gray_rounded">
<b class="gray_rounded5"></b>
<b class="gray_rounded4"></b>
<b class="gray_rounded3"></b>
<b class="gray_rounded2"><b></b></b>
<b class="gray_rounded1"><b></b></b></b>
</div>
</td>
</tr>
<tr>
<td>
<br/>
<div style="width:750px;">
<b class="gray_rounded">
<b class="gray_rounded1"><b></b></b>
<b class="gray_rounded2"><b></b></b>
<b class="gray_rounded3"></b>
<b class="gray_rounded4"></b>
<b class="gray_rounded5"></b></b>
<div class="gray_roundedfg">
<div class="title-text">Choose an emotion! (Click to select)</div>
<div id="emotionset" style="width:700px; height:1000px">Emote Set</div>
<div> </div>
</div>
<b class="gray_rounded">
<b class="gray_rounded5"></b>
<b class="gray_rounded4"></b>
<b class="gray_rounded3"></b>
<b class="gray_rounded2"><b></b></b>
<b class="gray_rounded1"><b></b></b></b>
</div>
</td>
</tr>
</table>
</div>
</div>
</div>
<div id='canvas-history-id' style='display: none;'>
<link href="http://www.rockyou.com/google_apps/emote_example/view/style/common.css" rel="stylesheet" type="text/css" />
<link href="http://www.rockyou.com/google_apps/emote_example/view/style/view.css" rel="stylesheet" type="text/css" />
<div id="main_body">
<div id="nav_links">
<a class="owner-only" href="javascript:goto_canvas_page('create');" style="display:none;font-family:Verdana,arial,sans-serif;font-weight:bold;">Emote Again!</a><span class="owner-only" style="display:none;"> | </span>
<a href="javascript:goto_canvas_page('history');" style="font-family:Verdana,arial,sans-serif;font-weight:bold;color:#444444;">Past Emotes</a> |
<a href="javascript:goto_canvas_page('friends');" style="font-family:Verdana,arial,sans-serif;font-weight:bold;">Friends' Emotes</a>
</div>
<div style="border-bottom:medium solid #E7E7E7;width:620px;">
</div>
<br />
<div class="title-text" id="history_title"></div>
<br />
<div id="history_boxes" class="panel">
<span>Please wait while this page loads...</span>
</div>
</div>
</div>
<div id='canvas-friends-id' style='display: none;'>
<link href="http://www.rockyou.com/google_apps/emote_example/view/style/common.css" rel="stylesheet" type="text/css" />
<link href="http://www.rockyou.com/google_apps/emote_example/view/style/view.css" rel="stylesheet" type="text/css" />
<div style="width:620px">
<div id="msg" style="display:none; padding:10px; text-align:center; background-color: #D9E6F7; font-size:16; margin:20px; color:#444444; margin-top:0px; -webkit-border-radius: 10px;-moz-border-radius: 10px;border-radius: 10px;">
You've just Emoted! Your most recent Emote will appear on your profile page. Check out your friends' Emotes below! </div>
<div id="nav_links">
<a class="owner-only" href="javascript:goto_canvas_page('create');" style="display:none;font-family:Verdana,arial,sans-serif;font-weight:bold;">Emote Again!</a><span class="owner-only" style="display:none;"> | </span>
<a href="javascript:goto_canvas_page('history');" style="font-family:Verdana,arial,sans-serif;font-weight:bold;">Past Emotes</a> |
<a href="javascript:goto_canvas_page('friends');" style="font-family:Verdana,arial,sans-serif;font-weight:bold;color:#444444;">Friends' Emotes</a>
</div>
<div style="border-bottom:medium solid #E7E7E7;width:620px;">
</div>
<br />
<div class="title-text" id="friends_title"></div>
<br />
<div id="friends_boxes" class="panel">
<span>Please wait while this page loads...</span>
</div>
</div>
</div>
<div id='canvas-friendselector-id' style='display: none;'>
<div id="nav_links">
<a class="owner-only" href="javascript:goto_canvas_page('create');" style="display:none;font-family:Verdana,arial,sans-serif;font-weight:bold;">Emote Again!</a><span class="owner-only" style="display:none;"> | </span>
<a href="javascript:goto_canvas_page('history');" style="font-family:Verdana,arial,sans-serif;font-weight:bold;">Past Emotes</a> |
<a href="javascript:goto_canvas_page('friends');" style="font-family:Verdana,arial,sans-serif;font-weight:bold;">Friends' Emotes</a>
</div>
<div style="border-bottom:medium solid #E7E7E7;width:620px;">
</div>
<br />
<h2>Choose friends to share how you feel!</h2>
<br />
<input type="submit" value='Share with your friends!' onclick='thispage.FS.submit();'></input> <br /><br />
<div id='div-friendselector'></div><br /><br />
<input type="submit" value='Share with your friends!' onclick='thispage.FS.submit();'></input>
</div>
<script type="text/javascript">
var thispage;
var viewer_id;
var owner_id;
function ry_init()
{
var url_params = gadgets.util.getUrlParameters();
viewer_id = url_params["gadgetViewer"];
owner_id = url_params["gadgetOwner"];
var default_page = "history";
if (viewer_id == owner_id) {
$$('.owner-only').invoke('show');
set_install();
default_page = "create";
} else {
$$('.viewer-only').invoke('show');
}
var prefs = gadgets.views.getParams();
var page_params = {};
if (typeof(prefs["pagename"]) == "undefined")
{
curr_page = default_page;
}
else {
var page_url = prefs['pagename'];
var page_url_parts = page_url.split("?");
var curr_page = page_url_parts[0];
curr_page = curr_page.replace(/.php/i, "");
if (page_url_parts.length > 1) page_params = page_url_parts[1].toQueryParams(); // map of query parameters
}
switch (curr_page)
{
case "create":
create_page.init(page_params);
thispage = create_page;
document.getElementById('canvas-create-id').style.display='';
break;
case "history":
history_page.init(page_params);
thispage = history_page;
document.getElementById('canvas-history-id').style.display='';
break;
case "friends":
friends_page.init(page_params);
thispage = friends_page;
document.getElementById('canvas-friends-id').style.display='';
break;
case "friendselector":
friendselector.init(page_params);
thispage = friendselector;
document.getElementById('canvas-friendselector-id').style.display='';
break;
default:
if (viewer_id == owner_id) {
create_page.init(page_params);
thispage = create_page;
document.getElementById('canvas-create-id').style.display='';
} else {
history_page.init(page_params);
thispage = history_page;
document.getElementById('canvas-history-id').style.display='';
}
break;
}
}
function goto_canvas_page(page_name)
{
var all_views = gadgets.views.getSupportedViews();
var canvas_view = all_views["canvas"];
var params = { "pagename" : encodeURIComponent(page_name) };
gadgets.views.requestNavigateTo(canvas_view, params);
}
function goto_profile_page()
{
var all_views = gadgets.views.getSupportedViews();
var profile_view = all_views["profile"];
gadgets.views.requestNavigateTo(profile_view, {});
}
function ry_debug(intext)
{
document.getElementById('ry-canvas-debug').innerHTML += '<br>'+intext;
}
// Define console.log to be empty if firebug is not available
if (typeof(console) == 'undefined')
console = new Object();
if (typeof(console.log) == 'undefined')
console.log = function() { };
// redefine encodeURIComponent to more closely match PHP's rawurlencode
var origEncodeURIComponent = encodeURIComponent;
encodeURIComponent = function(str) {
var escaped_str = origEncodeURIComponent(str);
escaped_str = escaped_str.replace("'", "%27");
return escaped_str;
};
function i18n_template(template, params)
{
// use prototype's template processing
var t = new Template(template);
return t.evaluate(params);
}
function genericJSONRequest(path, callback, opt_param_str)
{
var params = {};
params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.JSON;
params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.SIGNED;
params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET;
var url = "http://opensocial.rockyou.com/" + path;
// console.log(url);
if (opt_param_str != "undefined" && opt_param_str)
url = url + "?" + opt_param_str;
gadgets.io.makeRequest(url, function(response)
{
if (typeof response.data == "undefined")
{
alert("JSON Error: NO Data");
if (response.errors)
{
alert("Errors from server " + response.errors);
}
return;
}
// console.log(response);
data = response.data;
if (data.success == false)
alert("Debug: JSON call failed, error_code=" + data.error_code + ", error_message " + data.error_message);
else
callback(data);
}, params);
}
function genericJSONPost(path, callback, opt_param_str)
{
var params = {};
params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.JSON;
params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.SIGNED;
params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;
var url = "http://opensocial.rockyou.com/" + path;
if (opt_param_str != "undefined" && opt_param_str)
params[gadgets.io.RequestParameters.POST_DATA] = opt_param_str;
gadgets.io.makeRequest(url, function(response)
{
if (typeof response.data == "undefined")
{
alert("JSON Error: NO Data");
if (response.errors)
{
alert("Errors from server " + response.errors);
}
return;
}
// console.log(response);
data = response.data;
if (data.success == false)
alert("Debug: JSON call failed, error_code=" + data.error_code + ", error_message " + data.error_message);
else
callback(data);
}, params);
}
function postToActivityStream(text, callback, priority, body) {
priority = (typeof(priority) != "undefined") ? priority : opensocial.CreateActivityPriority.LOW;
callback = (typeof(callback) != "undefined") ? callback : defaultActivityCallback;
var params = {};
params[opensocial.Activity.Field.TITLE] = text;
params[opensocial.Activity.Field.BODY] = body;
var activity = opensocial.newActivity(params);
opensocial.requestCreateActivity(activity, priority, callback);
}
function defaultActivityCallback(data) {
//output(data);
}
function ry_debug_response(content, error)
{
ry_debug(content);
debugger;
}
// js equivalent of /includes/trackevent.php
function createTrackEventUrl(event, url, value)
{
if (event == ""){
return url;
}
link = "http://opensocial.rockyou.com/events/track.php?event=" + event;
if ((typeof(value)!="undefined") && (value != ""))
link = link + "&value="+value;
if (url != "")
link = link + "&url=" + encodeURIComponent(url);
return link;
}
// app install tracking
function set_install()
{
// if viewer is not owner we dont even check if this is the first time after installation
if ( owner_id != viewer_id ){
return;
}
// query appdata for the install date
req = opensocial.newDataRequest();
req.add(req.newFetchPersonAppDataRequest("VIEWER","install_date"), "app_data");
req.send(handle_install);
}
function handle_install(data)
{
// debugger;
var do_update = false;
if (data.get("app_data").hadError())
{
do_update = true;
}
else
{
var viewer_data = data.get("app_data").getData();
if ( (viewer_data[viewer_id] == undefined) || (viewer_data[viewer_id].install_date == undefined) ) {
do_update = true;
}
}
if (do_update)
{
genericJSONRequest("google_apps/server/RYAppInstall.php",do_nothing_callback);
// set installation date
var curr_date = new Date();
var data = curr_date.toUTCString();
req = opensocial.newDataRequest();
req.add(req.newUpdatePersonAppDataRequest("VIEWER", "install_date", data), "app_data");
req.send(do_nothing);
}
}
function do_nothing_callback(data){
}
function do_nothing(data){
}
//////////////////
function ry_CreateActivity(title,body){
var params = {};
params[opensocial.Activity.Field.TITLE]= title;
params[opensocial.Activity.Field.BODY]= body;
var actObj = opensocial.newActivity(params);
opensocial.requestCreateActivity(actObj, opensocial.CreateActivityPriority.HIGH,ry_CreteActivity_cb);
};
function ry_CreateActivity_cb(data)
{
}
function ry_SendNotification() {};
function ry_SendEmails() {};
function ry_SendInvitation() {};
var create_page = {
// page variables --------------------------------------------------------------------------
create_user_name : null,
create_viewer_id : null,
emote_icon : null,
emote_text : null,
// page methods ----------------------------------------------------------------------------
init : function(page_params)
{
// this page is for gadget owners only
if (viewer_id != owner_id)
{
javascript:goto_canvas_page('history'); return;
}
// set appropriate page height
gadgets.window.adjustHeight(1500);
// console.log(page_params);
// console.log(viewer_id);
// console.log(owner_id);
// lookup viewer info
this.loadContainerData();
// load emotion sets pane
genericJSONRequest("google_apps/emote_example/server/getEmotionSets.php", this.setEmoteSets.bind(this));
},
loadContainerData : function()
{
req = opensocial.newDataRequest();
// get info on viewer
req.add(req.newFetchPersonRequest('VIEWER'), 'viewer');
// console.log(this);
// req.send(create_page.handleContainerData);
req.send(this.handleContainerData.bind(this));
},
handleContainerData : function(data)
{
// console.log(data);
// viewer data
if (data.get("viewer").hadError())
{
alert("no data");
}
else
{
var viewer_data = data.get("viewer").getData();
this.create_user_name = viewer_data.getDisplayName();
this.create_viewer_id = viewer_data.getId();
// load most recent emote
// console.log(this);
this.create_loadEmote();
}
},
create_loadEmote : function()
{
genericJSONRequest("google_apps/emote_example/server/getEmotes.php", this.create_loadEmoteData.bind(this));
},
create_loadEmoteData : function(response)
{
// console.log(response);
var content = response.return_data;
if (content == "no_rows")
{
this.setEmoteSet("VistaIcons");
this.selectEmotion("Vista_cool", '', "http://www.rockyou.com/images/ryemote/vista/cool.jpg", "ready to Emote!");
}
else
{
var emote_row = content[0];
this.setEmoteSet(emote_row["emoteset"]);
this.selectEmotion(emote_row["name"], '', emote_row["icon"], emote_row["desc"]);
}
},
getEmoteDataObj : function(emoteSet, name, icon, desc)
{
var emote_data = new Object();
emote_data.emoteSet = emoteSet;
emote_data.name = name;
emote_data.icon = icon;
emote_data.desc = desc;
return emote_data;
},
saveEmoteData : function(emoteSet, name, icon, desc, redirect)
{
var param_str = "emotionid="+name+"&text="+encodeURIComponent(desc)+"&sender="+encodeURIComponent(this.create_user_name)+"&senderid="+encodeURIComponent(this.create_viewer_id);
genericJSONRequest("google_apps/emote_example/server/saveEmote.php?"+param_str, this.emoteSaved.bind(this));
},
emoteSaved : function()
{
var stream_title = " just Emoted!";
var stream_body = "<table><tr>";
stream_body += "<td><img src=\"" + this.emote_icon + "\" style=\"border: 1px solid #CCCCCC;padding: 3px;background-color: #FFFFFF;height:50px;width:50px;\" /></td>";
stream_body += "<td style=\"vertical-align:center;\"><span style=\"font-family:arial,sans-serif;color:#444444;font-size:24px;\"> " + this.create_user_name + " is </span><span style=\"font-family:arial,sans-serif;color:#444444;font-size:24px;font-weight:bold;\">" + this.emote_text + "</span></td>";
stream_body += "</tr></table>";
// alert(stream_body);
postToActivityStream(stream_title, this.emoteNotifyDone.bind(this), opensocial.CreateActivityPriority.HIGH, stream_body);
},
emoteNotifyDone : function()
{
goto_canvas_page('friends?msg=emoteSaved');
},
setEmoteSet : function(setname)
{
document.getElementById('emoset').value = setname;
genericJSONRequest("google_apps/emote_example/server/getEmotions.php?set="+setname, this.setEmoteList.bind(this));
},
selectEmotion : function(name, name2, icon, desc)
{
document.getElementById('currEmoText').value = desc;
document.getElementById('currEmoImg').src = icon;
document.getElementById('emotionid').value = name;
},
SubmitEmote : function()
{
var setname = document.getElementById('emoset').value;
this.emote_text = document.getElementById('currEmoText').value;
this.emote_icon = document.getElementById('currEmoImg').src;
var name = document.getElementById('emotionid').value;
this.saveEmoteData(setname, name, this.emote_icon, this.emote_text, true);
},
setEmoteList : function(response)
{
ihtml = "";
var emotes = response.return_data;
// console.log(response);
for (emote1 in emotes)
{
emote = emotes[emote1];
ihtml += "<div class=\"emotionbox\" id=\"" + emote[0] + "\" onClick=\"thispage.selectEmotion('" + emote[0] + "', '" + emote[2] + "', '" + emote[5] + "', '" + emote[4] + "')\"><img src=\"" + emote[5] + "\" /><br><span class=\"boxnames\">" + emote[4] + "</span><br></div>";
}
document.getElementById('emotionset').innerHTML = ihtml;
},
setEmoteSets : function(response)
{
// console.log(response);
var ihtml = "<table cellpadding='2px'><tr>";
var emotes = response.return_data;
// var_dump(emotes);
for (row = 0; row < emotes.length ; row ++)
{
ihtml += "<td>";
ihtml += "<div class=\"setbox\" id=\"" + emotes[row][0] + "\" onClick=\"thispage.setEmoteSet('" + emotes[row][0] + "')\"><img width=\"50\" src=\"" + emotes[row][3] + "\" /><br><span class=\"boxnames\">" + emotes[row][1] + "</span></div>";
ihtml += "</td>";
}
ihtml += "</tr></table>";
document.getElementById('emotionsets').innerHTML = ihtml;
}
}
var history_page = {
// page variables --------------------------------------------------------------------------
history_user_name : "",
history_owner_id : "",
// page methods ----------------------------------------------------------------------------
init : function()
{
// set appropriate page height
gadgets.window.adjustHeight(900);
this.loadContainerData();
},
loadContainerData : function()
{
// loop up name of owner
req = opensocial.newDataRequest();
req.add(req.newFetchPersonRequest('OWNER'), 'owner');
req.send(this.handleContainerData.bind(this));
},
handleContainerData : function(data)
{
// owner data
if (data.get("owner").hadError())
{
alert("no data");
var disp_name = "User";
}
else
{
var owner_data = data.get("owner").getData();
// var_dump(owner_data);
var disp_name = owner_data.getDisplayName()
this.history_owner_id = owner_data.getId();
}
// save name for display
this.history_user_name = disp_name;
// update UI
document.getElementById('history_title').innerHTML = i18n_template("<span class="title-text">#{name}</span>'s recent Emotes:", { name : disp_name });
// query RY for emote rows and setup UI
if (typeof(this.history_owner_id ) != undefined)
this.loadEmotes();
},
loadEmotes : function()
{
genericJSONRequest("google_apps/emote_example/server/getEmotes.php?limit=20&ids="+this.history_owner_id, this.loadEmoteData.bind(this));
},
loadEmoteData : function(response)
{
emote_rows = response.return_data;
// console.log(emote_rows);
// console.log(content);
if (emote_rows != "no_rows")
{
var history_markup = "<table>";
var i;
var emote;
for(i=0;i<emote_rows.length;i++) {
emote = emote_rows[i];
var uid = emote["uid"];
var disp_name = this.history_user_name;
var icon = emote["icon"];
if (icon == "")
icon = "http://www.rockyou.com/images/ryemote/vista/cool.jpg";
if ((i%2) == 0)
{
history_markup += " <tr>\n";
}
history_markup += " <td class=\"emote\">\n";
history_markup += " <div>\n";
history_markup += " <table cellspacing=\"0\">\n";
history_markup += " <tr>\n";
history_markup += " <td valign=\"top\">\n";
history_markup += " <img src=\"" + icon + "\" class=\"emoteImg\"/>\n";
history_markup += " </td>\n";
history_markup += " <td class=\"emoteDetail\">\n";
history_markup += " <div class=\"emoteText\">";
history_markup += i18n_template("#{name} is <strong>#{text}</strong>", { name : this.history_user_name, text : emote["desc"] });
history_markup += " </div>\n";
history_markup += " <div class=\"emoteDate\">" + i18n_template("Posted #{period} ago", { period : emote["posted_str"] }) + "</div>\n";
history_markup += " </td>\n";
history_markup += " </tr>\n";
history_markup += " </table>\n";
history_markup += " </div>\n";
history_markup += " </td>\n";
if ((i%2) == 1)
{
history_markup += " </tr>\n";
}
}
history_markup += "</table>";
}
else
{
var history_markup = "No Emotes yet!";
}
document.getElementById('history_boxes').innerHTML = history_markup;
}
}
var friends_page = {
// page variables --------------------------------------------------------------------------
user_name : "",
owner_id : "",
friends_lookup : "",
// page methods ----------------------------------------------------------------------------
init : function(params)
{
// set appropriate page height
gadgets.window.adjustHeight(1500);
this.loadContainerData();
if(params.msg && params.msg=='emoteSaved') {
document.getElementById('msg').style.display='';
}
},
loadContainerData : function()
{
req = opensocial.newDataRequest();
// get info on friends of owner
var params = {};
params[opensocial.DataRequest.PeopleRequestFields.MAX] = 1000;
req.add(req.newFetchPeopleRequest(opensocial.DataRequest.Group.OWNER_FRIENDS, params), 'friends');
// also get info on owner
req.add(req.newFetchPersonRequest('OWNER'), 'owner');
req.send(this.handleContainerData.bind(this));
},
handleContainerData : function(data)
{
// owner data
if (data.get("owner").hadError())
{
alert("no data");
var disp_name = "User";
}
else
{
var owner_data = data.get("owner").getData();
var disp_name = owner_data.getDisplayName();
this.owner_id = owner_data.getId();
}
// save name for display
this.user_name = disp_name;
// update UI
document.getElementById('friends_title').innerHTML = i18n_template('Recent Emotes from friends of #{name}:', { 'name' : this.user_name });
// document.getElementById('friends_owner_name').innerHTML = "Recent Emotes from friends of {name}:" + this.user_name;
// friends info
this.friends_lookup = new Array();
var friend_ids = new Array();
if (data.get("friends").hadError())
{
alert("no data");
}
else
{
var friends_data = data.get("friends").getData();
var scope = this;
friends_data.each(function(friend_data)
{
var id = friend_data.getId();
// strip leading 0s off of id
if (typeof(id) == "string")
id = id.replace(/^0+/, "");
// console.log(id);
var disp_name = friend_data.getDisplayName();
friend_ids.push(id);
scope.friends_lookup[id] = disp_name;
}
);
}
// add owner to name lookup
this.friends_lookup[this.owner_id] = this.user_name;
// alert(owner_id);
// friend_ids.push(this.owner_id);
// query RY for emote rows and setup UI
this.loadEmotes(friend_ids);
},
loadEmotes : function(friend_ids)
{
var param_str = "limit=20";
if (friend_ids.length > 0)
{
param_str += "&ids=" + friend_ids.join(",");
}
// alert(param_str);
// first get name of user
genericJSONPost("google_apps/emote_example/server/getEmotes.php", this.loadEmoteData.bind(this), param_str);
},
loadEmoteData : function(response)
{
emote_rows = response.return_data;
// console.log(emote_rows);
// console.log(content);
if (emote_rows != "no_rows")
{
var history_markup = "<table>";
var i;
var emote;
for(i=0;i<emote_rows.length;i++) {
emote = emote_rows[i];
var uid = emote["uid"];
var disp_name = this.friends_lookup[uid];
var icon = emote["icon"];
if (icon == "")
icon = "http://www.rockyou.com/images/ryemote/vista/cool.jpg";
if ((i%2) == 0)
{
history_markup += " <tr>\n";
}
history_markup += " <td class=\"emote\">\n";
history_markup += " <div>\n";
history_markup += " <table cellspacing=\"0\">\n";
history_markup += " <tr>\n";
history_markup += " <td valign=\"top\">\n";
history_markup += " <img src=\"" + icon + "\" class=\"emoteImg\"/>\n";
history_markup += " </td>\n";
history_markup += " <td class=\"emoteDetail\">\n";
history_markup += " <div class=\"emoteText\">";
history_markup += i18n_template("#{name} is <strong>#{text}</strong>", { name : disp_name, text : emote["desc"] });
history_markup += " </div>\n";
history_markup += " <div class=\"emoteDate\">" + i18n_template("Posted #{period} ago", { period : emote["posted_str"] }) + "</div>\n";
history_markup += " </td>\n";
history_markup += " </tr>\n";
history_markup += " </table>\n";
history_markup += " </div>\n";
history_markup += " </td>\n";
if ((i%2) == 1)
{
history_markup += " </tr>\n";
}
}
history_markup += "</table>";
}
else
{
var history_markup = "No Emotes yet!";
}
document.getElementById('friends_boxes').innerHTML = history_markup;
}
}
eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('8 177(99,145,81){2.139=200;2.22=40;2.101=186;2.153=45;2.152=31;2.99=99;2.167=145;2.122=81;2.12=114 113();2.96=114 113();2.9=114 113();2.25="42";2.76=0;2.16=0;2.62=0;2.74=0;2.37=1;2.72=31;2.134="";2.118=31;2.141=31;2.175=8(81){2.58=81};2.180=8(81){2.30=81};2.191=8(87){2.96=87.188(",")};2.168=8(4){6 65=2.96.57(4);3(65>=0){2.96.109(65,1);32 45}24 32 31};2.112=8(92){6 27={};27["4"]=92.160(89.156.138.190);3(2.168(27["4"]))32;27["126"]=92.171();6 100=185(92.171());27["68"]=100.172(0,1).184()+100.172(1,10).187();3(100.19>11)27["68"]+="..";27["82"]=92.160(89.156.138.176);2.12.61(27)};2.94=8(104){6 73=89.179();6 47={};47[89.115.116.181]=2.62;3(104)47[89.115.116.137]=2.139;24 47[89.115.116.137]=2.22;3(2.118)73.132(73.131(\'118\',47),\'102\');24 73.132(73.131(\'189\',47),\'102\');3(104)73.154(2.146.103(2));24 73.154(2.144.103(2))};2.144=8(90){3(90.147()){3(43(2.30)=="8")2.30(31);32}6 69=90.135(\'102\').143();6 91=69.150();3(91==0){3(43(2.30)=="8")2.30(31);32}2.74=69.182();69.140(2.112.103(2));2.62+=91;2.16=2.12.19;3(2.62>=2.74)2.72=45;3(2.72||(2.22<=2.16)){2.37=1;2.128()}3(!2.72){3(2.22>2.16){2.94(31);32}24{2.94(45);32}}24{3(43(2.30)=="8")2.30(45)}};2.146=8(90){3(90.147()){3(43(2.30)=="8")2.30(31);32}6 69=90.135(\'102\').143();6 91=69.150();3(91==0){3(43(2.30)=="8")2.30(31);32}69.140(2.112.103(2));2.62+=91;2.16=2.12.19;3((2.62<2.74)&&(2.62<2.101)){2.94(45)}24 3((2.62>=2.74)||(2.62>=2.101)){2.72=45;3(15.34(\'117\'))15.34(\'117\').54=2.16;3(15.34(\'119\'))15.34(\'119\').54=2.111();3(43(2.30)=="8")2.30(45)}};2.128=8(){6 17=(2.37-1)*2.22;6 29=((2.16-17)>=2.22)?(17+2.22):2.16;3(2.152)32;6 55=15.35("13");55.39(\'4\',\'224\');6 41=15.35("13");41.18=\'51-41-158\';55.33(41);41=15.35("13");41.39(\'4\',\'225\');41.18=\'51-41-108\';55.33(41);41=15.35("13");41.18=\'51-41-163\';55.33(41);6 56=15.35("13");56.39(\'4\',\'221\');56.18=\'51-220\';6 21=15.35("13");21.18=\'51-110-216\';21.54="<36 66=\'"+2.48(\'155\',\'\')+"\'>217 149</36> | <36 66=\'"+2.48(\'148\',\'\')+"\'>192 149</36> ";56.33(21);21=15.35("13");21.18=\'51-110\';21.39(\'133\',\'218\');3(2.153){21.54="<106><105 4=\'98\'></105></106>&93;60&93;<106><105 4=\'117\'>"+2.16+"</105></106>&93;219"}24 21.54="&93;";56.33(21);21=15.35("13");21.18=\'51-110\';21.39(\'4\',\'119\');21.39(\'133\',\'227\');21.54=2.111();56.33(21);21=15.35("13");21.39(\'4\',\'233\');21.18=\'51-110-235\';56.33(21);6 53;52(6 44=17;44<29;44++){53=15.35("13");53.39("4","121"+2.12[44].4);53.18="23-28";53.39("234",2.48("151","\\\'"+2.12[44].4+"\\\'"));53.39("232",2.48("123","\\\'"+2.12[44].4+"\\\',45"));53.39("228",2.48("123","\\\'"+2.12[44].4+"\\\',31"));53.54="<13 64=\\"23-28-229\\"></13><13 64=\\"23-28-108\\"></13><13 64=\\"23-28-230\\"></13>"+"<13 64=\\"23-28-215\\">"+"<82 214=\\""+2.12[44].82+"\\"/>"+"<173 95=\\"199:201;202:198;197-193:194;\\">"+2.12[44].68+"<161><195 4=\\"162"+2.12[44].4+"\\" 196=\\"203\\"></173>"+"<13 4=\\"124"+2.12[44].4+"\\" 64=\\"23-28-204\\">"+2.12[44].126+"</13>"+"<13 95=\\"169:159\\"></13>"+"</13>"+"<13 64=\\"23-28-211\\"></13><13 64=\\"23-28-108\\" /></13><13 64=\\"23-28-161\\"></13>";56.33(53)}21=15.35("13");21.39(\'95\',\'169: 159;\');56.33(21);55.33(56);6 38=15.35("13");38.18=\'51-38-158\';55.33(38);38=15.35("13");38.39(\'4\',\'212\');38.18=\'51-38-108\';55.33(38);38=15.35("13");38.18=\'51-38-163\';55.33(38);6 14=15.34(2.167);127(14.107){14.207(14.107)}14.33(55);14.54+="";2.97()};2.111=8(){6 49="";6 70=5;6 71;3(2.72)71=120.164(2.16/2.22);24 71=120.164(2.74/2.22);83=120.208((2.37-1)/70);130=(((83+1)*70)<71)?83+1:0;3(83>0)49+="<36 66=\'"+2.48(\'80\',(83-1)*70+1)+"\'> &165;&165; </36> ";6 75=0;52(6 7=1;7<=70;7++){75=83*70+7;3(75>71)20;3(75!=2.37)49+=" <36 66=\'"+2.48(\'80\',75)+"\'>"+75+"</36> ";24 49+=" "+75+" "}3(130>0)49+=" <36 66=\'"+2.48(\'80\',130*70+1)+"\'> &166;&166; </36>";3(2.37>1)49+=" <36 66=\'"+2.48(\'80\',2.37-1)+"\'>206</36> ";3((2.37>1)&&(2.37<71))49+="|";3(2.37<71)49+=" <36 66=\'"+2.48(\'80\',2.37+1)+"\'>205</36> ";3(49.209()=="1")49="&93;";32 49};2.48=8(53,47){6 86="210:"+2.99+"."+53+"(";3(43(47)!="213")86+=47;24 52(6 7=0;7<47.19;7++){86+=47[7];3(7<(47.19-1))86+=","}86+=");";32 86};2.67=8(4,46){6 14=15.34(\'121\'+4);15.34(\'162\'+4).46=46;6 60=15.34(\'124\'+4);3(46){60.18=60.18.77("23-28","23-79");3(14)14.18=14.18.77("23-28","23-79");14=14.107;127(14){14.18=14.18.77("23-28","23-79");14=14.157}}24{60.18=60.18.77("23-79","23-28");3(14)14.18=14.18.77("23-79","23-28");14=14.107;127(14){14.18=14.18.77("23-79","23-28");14=14.157}}};2.97=8(){6 17=(2.37-1)*2.22;6 29=((2.16-17)>=2.22)?(17+2.22):2.16;78(2.25){26"63":52(6 7=17;7<29;7++)2.67(2.12[7].4,45);20;26"42":52(6 7=17;7<29;7++)3(2.9.57(2.12[7].4)>=0)2.67(2.12[7].4,45);24 2.67(2.12[7].4,31);20;26"59":52(6 7=17;7<29;7++)3(2.9.57(2.12[7].4)>=0)2.67(2.12[7].4,31);24 2.67(2.12[7].4,45);20}3(15.34(\'98\'))15.34(\'98\').54=2.76};2.123=8(4,136){6 60=15.34(\'124\'+4);3(136)60.95.142="226";24 60.95.142="129"};2.151=8(4){6 14=15.34(\'121\'+4);46=(14.18=="23-28");3(46){78(2.25){26"42":3((2.9.19+1)==2.16){2.25="63";2.9.19=0;20}2.9.61(4);20;26"59":2.9.109(2.9.57(4),1);3(2.9.19==0)2.25="63";20}}24{78(2.25){26"63":3(2.16==1){2.25="42";2.9.19=0;20}2.25="59";2.9.19=0;2.9.61(4);20;26"42":2.9.109(2.9.57(4),1);20;26"59":3((2.9.19+1)==2.16){2.25="42";2.9.19=0;20}2.9.61(4);20}}2.67(4,46);2.88();3(15.34(\'98\'))15.34(\'98\').54=2.76;3(43(2.58)=="8")2.58({"4":4,"46":46})};2.155=8(){2.25="63";2.9.19=0;2.88();2.97();3(43(2.58)=="8")2.58({"4":"104","46":""})};2.148=8(){2.25="42";2.9.19=0;2.88();2.97();3(43(2.58)=="8")2.58({"4":"129","46":""})};2.223=8(){6 65=0;6 17=(2.37-1)*2.22;6 29=((2.16-17)>=2.22)?(17+2.22):2.16;78(2.25){26"63":3(2.16==(29-17)){2.25="42";2.9.19=0;20}2.25="59";52(6 7=17;7<29;7++){3(2.9.57(2.12[7].4)<0)2.9.61(2.12[7].4)}20;26"42":3(2.76==(29-17)){2.9.19=0;20}52(6 7=17;7<29;7++){65=2.9.57(2.12[7].4);3(65>=0)2.9.109(65,1)}20;26"59":52(6 7=17;7<29;7++){3(2.9.57(2.12[7].4)<0)2.9.61(2.12[7].4)}3(2.9.19==2.16){2.25="42";2.9.19=0}20}2.88();2.97();3(43(2.58)=="8")2.58({"4":"129","46":""})};2.88=8(){78(2.25){26"63":2.76=2.16;20;26"42":2.76=2.9.19;20;26"59":2.76=2.16-2.9.19;20}};2.222=8(84){6 27=[];6 17=(84-1)*2.22;6 29=((2.16-17)>=2.22)?(17+2.22):2.16;27=2.12.231(17,29);32 27};2.178=8(4,68,82){6 27={};27["4"]=4;27["68"]=68;27["126"]=68;27["82"]=82;2.12.61(27);2.16=2.12.19;2.9.61(4);2.88();2.96.61(4);2.134=4};2.183=8(){6 50={};3((2.141)&&(2.74>2.101+2.22)){3(2.25=="63"){50["125"]="59";50["85"]=""}24{50["125"]=2.25;50["85"]=2.9.170()}}24{50["125"]="42";78(2.25){26"63":50["85"]=2.12[0].4;52(6 7=1;7<2.12.19;7++)50["85"]+=","+2.12[7].4;20;26"59":6 87="";52(6 7=0;7<2.12.19;7++){3(2.9.57(2.12[7].4)<0){87+=","+2.12[7].4}}3(87.19>0)50["85"]=87.174(1);20;26"42":50["85"]=2.9.170();20}}3(43(2.122)=="8")2.122(50)};2.80=8(84){3((84==1)&&(!2.72)){2.94(31);32}6 17=(84-1)*2.22;6 29=((2.16-17)>=2.22)?(17+2.22):2.16;3(29>17){2.37=84;2.128()}24{3(43(2.30)=="8")2.30(31);32}}}',10,236,'||this|if|id||var|i|function|selectedItems|||aFriends|div|e|document|counter|from|className|length|break|navSelect|UIPageSize|friend|else|selectionMode|case|ret|inactive|to|optPageCallBack|false|return|appendChild|getElementById|createElement|a|UIcurPage|mainfooter|setAttribute||mainheader|INC|typeof|k|true|checked|params|GenerateFunctionLinks|sHTML|selectionObj|fs|for|f|innerHTML|box|body|indexOf|optClickCallBack|EXC|of|push|offset|ALL|class|ind|href|toggleSelection|name|vFriends|NAV_SIZE|LastPage|bDataReady|req|totalSize|j|selectedTotal|replace|switch|active|gotoPage|cb|img|prevBlock|page|ID_LIST|sLink|list|updateTotalSelected|opensocial|dataResponse|curPagesize|item|nbsp|FetchPage|style|excludeList|SetPageChecks|numberOfSelected|objName|str|MAX_DOWNLOAD_ATTEMPT|Friends|bind|all|span|strong|firstChild|m|splice|navigation|GenerateNavigation|ExtractFriendData|Array|new|DataRequest|PeopleRequestFields|numberOfTotal|VIEWER_FRIENDS|fs_navigation_pages|Math|fs_friend_|submitCallBack|namePopup|fs_of_|SELECTION_MODE|full_name|while|GeneratePageHTML|none|nextBlock|newFetchPeopleRequest|add|align|preSelectId|get|toggle|MAX|Field|CONTAINER_MAX|each|OVER_DRIVE|display|getData|FetchFriends_cb|loc|FetchAll_cb|hadError|unSelectAll|All|size|addFriend|bDownloadOnly|bToggleText|send|selectAll|Person|nextSibling|l|both|getField|br|cb_|r|ceil|lt|gt|location|filter|clear|toString|getDisplayName|substring|p|substr|setClickCallBack|THUMBNAIL_URL|FriendSelector|preSelect|newDataRequest|setPageLoadCallBack|FIRST|getTotalSize|submit|toUpperCase|String|1000|toLowerCase|split|OWNER_FRIENDS|ID|setExcludeList|Unselect|space|nowrap|input|type|white|hidden|height||45px|overflow|checkbox|namepopup|Next|Previous|removeChild|floor|strip|javascript|bl|fs_mainfooter_m_id|array|src|content|left|Select|center|Selected|mainbody|fs_mainbody_id|returnFriends|unSelectPage|fs_box_0|fs_mainheader_m_id|block|right|onmouseout|tl|tr|slice|onmouseover|fs_navigation_seperator_id|onClick|seperator'.split('|'),0,{}))
var friendselector = {
FS : null,
m_text : null,
m_sender_name : null,
m_sender_id : null,
init : function(params) {
this.m_text = params.text;
// set appropriate page height
gadgets.window.adjustHeight(1000);
req = opensocial.newDataRequest();
// get info on viewer
req.add(req.newFetchPersonRequest('VIEWER'), 'viewer');
// console.log(this);
// req.send(create_page.handleContainerData);
req.send(this.handle_container_data.bind(this));
},
handle_container_data : function(resp) {
if (resp.get("viewer").hadError())
{
this.m_sender_name = "Someone";
}
else
{
var viewer_data = resp.get("viewer").getData();
this.m_sender_name = viewer_data.getDisplayName();
this.m_sender_id = viewer_data.getId();
}
this.load_friend_selector();
},
load_friend_selector : function() {
var page = this;
this.FS = new FriendSelector("thispage.FS", "div-friendselector",
function(response){
var param_str = "text="+encodeURI(page.m_text)+"&friends="+response["ID_LIST"]+"&sender="+encodeURI(page.m_sender_name)+"&senderid="+page.m_sender_id;
genericJSONPost("google_apps/emote_example/server/processFriendSelector.php", page.process_done.bind(page), param_str);
}
);
this.FS.gotoPage(1);
},
process_done : function(resp) {
goto_canvas_page('friends?msg=emoteSaved');
}
}
gadgets.util.registerOnLoadHandler(ry_init);
</script>
]]>
</Content>
</Module>