<?xml version="1.0" encoding="UTF-8"?>
<Module>
<ModulePrefs 
    title="OpenSocial Players" 
    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="Raymond" 
    author_email="raymond@rockyou.com" 
    description="Show off your OpenSocial dev skillz!  Which developer do you feel like?" 
    author_location="San Mateo, CA" 
    author_affiliation="RockYou!" 
    title_url="http://www.ultimatefail.com/" 
    directory_title="OpenSocial Players" 
    summary="Don't know who lou_hi5, amar, and stephaniebambam are?  Sucks to be you!" 
    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" />
    <!--
    <Optional feature="hi5-lifecycle">
        <Param name="installPingUrl" value="http://..."/>
        <Param name="removePingUrl" value="http://..."/>
        <Param name="invitePingUrl" value="http://..."/>
    </Optional>
    -->
</ModulePrefs>

<Content type="html" view="preview">
<![CDATA[


<h1>OpenSocial Players</h1>
<h2>text text text</h2>
    
]]>
</Content>

<Content type="html" view="profile">
<![CDATA[

<script src="http://www.ultimatefail.com/apps/prototype.js" type="text/javascript"></script>

<h1>OpenSocial Players</h1>
<a href="javascript:goto_canvas_page('create')">Go to canvas page</a>

<script type="text/javascript">

    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 init()
    {
        gadgets.window.adjustHeight(100);
    }

    gadgets.util.registerOnLoadHandler(init);
</script>

]]>
</Content>

<Content type="html" view="canvas">
    <![CDATA[
    
<script src="http://www.ultimatefail.com/apps/prototype.js" type="text/javascript"></script>
    
<div id='canvas-create-id' style='display: none;'>


<h2>Create page</h2>
<a href="javascript:goto_canvas_page('friends')">Go to friends page</a>

<br />

Select somebody (please):
<table>
<tr>
<td>
<a href="javascript:select_person('Lou')">Lou, perpetual motion machine</a>
</td>
<td>
<a href="javascript:select_person('Paul')">Paul, rumored inventor of gopher</a>
</td>
<td>
<a href="javascript:select_person('Anil')">Anil, a playa on the opensocial scene</a>
</td>
</tr>
</table>

</div>

<div id='canvas-friends-id' style='display: none;'>

<h2>Friends page</h2>
<a href="javascript:goto_canvas_page('create')">Go to create page</a>

<br />


</div>

<script type="text/javascript">

    // app-specific code ---------------------------------------------------------------------------
    
    // create page ---------------------------------------------------------------------------------
    
    function create_page_init()
    {
    }
    
    function select_person(selected_name)
    {
        // figure out viewer's name
        var viewer_name = viewer_data.getDisplayName();
        
        // proccess the user action
        var params = {};
        params['selected_name'] = selected_name;
        params['viewer_name'] = viewer_name;
        
        makeJSONGET('apps/server/processUserAction.php', handle_user_selected, params);
    }
    
    function handle_user_selected(data)
    {
        // selection processed, redirect user to next page in the flow
        // goto_canvas_page('friends');
    }
    
    // friends page --------------------------------------------------------------------------------

    function friends_page_init()
    {
    }

    
    // common "framework" code ---------------------------------------------------------------------


    /**
     * user data globals that are useful in every view (also some containers will precache this data anyway, so
     * it's a good idea to always grab it)
     */
    var viewer_id;
    var owner_id;
    var viewer_data;
    var owner_data;

    /**
     * grab common user data on every load
     */
    function pre_init_request() {
        var req = opensocial.newDataRequest();
        req.add(req.newFetchPersonRequest(opensocial.DataRequest.PersonId.VIEWER), "viewer");
        req.add(req.newFetchPersonRequest(opensocial.DataRequest.PersonId.OWNER), "owner");
        req.send(pre_init);
    }

    /**
     * canvas view init - process user data and show appropriate page
     */
    function pre_init(data)
    {
        if (typeof(data.get("viewer")) == "undefined" || data.get("viewer").hadError())
        {
            viewer_id = "";
        }
        else
        {
            viewer_data = data.get("viewer").getData();
            viewer_id = viewer_data.getId();
        }
        if (typeof(data.get("owner")) == "undefined" || data.get("owner").hadError())
        {
            owner_id = "";
        }
        else
        {
            owner_data = data.get("owner").getData();
            owner_id = owner_data.getId();
        }
        
        var prefs = gadgets.views.getParams();

        var page_params = {};
        var curr_page = 'default';
        if (typeof(prefs["pagename"]) != "undefined")
        {
            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);
                document.getElementById('canvas-create-id').style.display='';
                break;
            case "friends":
                // friends_page.init(page_params);
                document.getElementById('canvas-friends-id').style.display='';
                break;
            default:
                if (viewer_id == owner_id) {
                    // create_page.init(page_params);
                    document.getElementById('canvas-create-id').style.display='';
                } else {
                    // history_page.init(page_params);
                    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 makeJSONGET(path, callback, opt_params)
    {
        var params = {};
        params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.JSON;
        params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET;
        var url = "http://www.ultimatefail.com/" + path;

        // pass back Hi5 auth token for REST api access
        var p = gadgets.views.getParams(); 
        var Hi5AuthToken = p['Hi5AuthToken'];
        
        // always pass back container domain
        var env = opensocial.getEnvironment();
        var curr_domain = env.getDomain();        
        
        // make query string
        if (typeof(opt_params) == 'undefined')
            opt_params = {};
        if (typeof(Hi5AuthToken) != 'undefined')
            opt_params['authtoken'] = Hi5AuthToken;
        opt_params['domain'] = curr_domain;
        var param_str = Object.toQueryString(opt_params);
        
        if (url.indexOf("?") >=0) 
            url = url + "&" + param_str;
        else
            url = url + "?" + param_str;        

        gadgets.io.makeRequest(url, function(response)
        {
            if (typeof (response.data) == "undefined")
            {
                alert("JSON Error: NO Data");
                return;
            }
            data = response.data;
            if (typeof (data.remote_js) != "undefined")
            {
                eval(data.remote_js);
            }
            callback(data);
        }, params);
    }
                    
    function ry_CreateActivity(title,body,imgs,link,icon){
        var params = {};          
        params[opensocial.Activity.Field.TITLE]= title;
        params[opensocial.Activity.Field.BODY]= body;
        var mItems = new Array();
        for (var i=0;i<imgs.length;i++){
            mItems[i] = opensocial.newActivityMediaItem(opensocial.Activity.MediaItem.Type.IMAGE,imgs[i]);
        }
        var actObj = opensocial.newActivity(params);  
        actObj.setField(opensocial.Activity.Field.MEDIA_ITEMS, mItems);        
        if (icon)
            actObj.setField(opensocial.Activity.Field.STREAM_FAVICON_URL,icon);
        
        if (link)
            actObj.setField(opensocial.Activity.Field.URL,link);
        console.log("title"+title);    
        console.log("body"+body);    
        console.log("link"+link);    
        opensocial.requestCreateActivity(actObj, opensocial.CreateActivityPriority.HIGH,ry_CreateActivity_cb);
    };
            
    function ry_CreateActivity_cb(data)
    {
        //console.log(data);
    }             

    gadgets.util.registerOnLoadHandler(pre_init_request);

</script>
    ]]>
</Content>

</Module>
