

var currentUser;
var currentOwner;
var viewerFriends = {};
var ownerFriends = {};

function autoFind(id)
{
   //if (currentUser.getId() == id) { return currentUser; } 
   if (currentOwner.getId() == id) { return currentOwner; }
   if (viewerFriends.getById(id) != null) { return viewerFriends.getById(id); }
   if (ownerFriends.getById(id) != null) { return ownerFriends.getById(id); }
   return -1;

}

var preloadFriendsCallbackFunction;
function preloadFriends(callBack, pagesize, startpage, endpage)
{
  if (startpage == undefined) { startpage = 0; }
  if (endpage == undefined) { endpage = 500; }
  if (pagesize == undefined) { pagesize = 200; }
   preloadFriendsCallbackFunction = callBack;
   MyOpenSpace.DefaultPageSize = pagesize;
   var os = opensocial.Container.get();
   var req = os.newDataRequest();
   var params = {};
   params[opensocial.DataRequest.PeopleRequestFields.FIRST] = startpage;  
   params[opensocial.DataRequest.PeopleRequestFields.MAX] = endpage;
   req.add(os.newFetchPeopleRequest(opensocial.DataRequest.Group.OWNER_FRIENDS,params));
   req.add(os.newFetchPeopleRequest(opensocial.DataRequest.Group.VIEWER_FRIENDS,params));
   req.send(preloadOwnerFriendsCallback);
}

function preloadOwnerFriendsCallback(d)
{
   ownerFriends = d.get(opensocial.DataRequest.Group.OWNER_FRIENDS).getData();;
   viewerFriends = d.get(opensocial.DataRequest.Group.VIEWER_FRIENDS).getData();
   if (preloadFriendsCallbackFunction != undefined) { preloadFriendsCallbackFunction(); }
}


var preloadUserCallbackFunction;
function preloadUsers(callBack)
{
   preloadUserCallbackFunction = callBack;
   var dataRequest = opensocial.newDataRequest();
   dataRequest.add( dataRequest.newFetchPersonRequest(opensocial.DataRequest.PersonId.VIEWER));
   dataRequest.add( dataRequest.newFetchPersonRequest(opensocial.DataRequest.PersonId.OWNER));   
   dataRequest.send(preloadUsersCallback)
}

function preloadUsersCallback(data)
{
   if (data.get(opensocial.DataRequest.PersonId.VIEWER) != undefined) { currentUser = data.get(opensocial.DataRequest.PersonId.VIEWER).getData(); }
   if (data.get(opensocial.DataRequest.PersonId.OWNER) != undefined) { currentOwner = data.get(opensocial.DataRequest.PersonId.OWNER).getData(); }
   if (currentOwner == undefined) { currentOwner = currentUser; }
   if (preloadUserCallbackFunction != undefined) { preloadUserCallbackFunction(); }
}

/*function makeRequest(url,callback,dtype)
{
   if (dtype == null) { dtype = opensocial.ContentRequestParameters.ContentType.HTML; }
   if (dtype == 'xml') { dtype = opensocial.ContentRequestParameters.ContentType.XML; }
   d = new Date();
   var p = {};
   p[opensocial.ContentRequestParameters.METHOD] = opensocial.ContentRequestParameters.MethodType.GET;
   p[opensocial.ContentRequestParameters.CONTENT_TYPE] = dtype;
   p[opensocial.ContentRequestParameters.AUTHENTICATION] = opensocial.ContentRequestParameters.AuthorizationType.SIGNED;
   opensocial.makeRequest(url + '&d=' + d.getTime(),callback,p);
}*/

function makeRequest(url,callback)
{
   dtype = opensocial.ContentRequestParameters.ContentType.HTML; 
 
   d = new Date();
   var p = {};
   p[opensocial.ContentRequestParameters.METHOD] = opensocial.ContentRequestParameters.MethodType.GET;
   p[opensocial.ContentRequestParameters.CONTENT_TYPE] = dtype;
   p[opensocial.ContentRequestParameters.AUTHENTICATION] = opensocial.ContentRequestParameters.AuthorizationType.SIGNED;
   opensocial.makeRequest(url + '&d=' + d.getTime(),callback,p);
}


function postToBulletin(subject,body,who,useCallback) { postTo('BULLETINS',subject,body,who,useCallback); }
function postToBlog(subject,body,who,useCallback) { postTo('BLOG',subject,body,who,useCallback); }
function postToProfile(subject,body,who,useCallback) { postTo('PROFILE',subject,body,who,useCallback); }
function postToComment(subject,body,who,useCallback) { postTo('COMMENTS',subject,body,who,useCallback); }
function postToMessage(subject,body,who,useCallback) { postTo('SEND_MESSAGE',subject,body,who,useCallback); }

function postTo(type,subject,body,who,useCallback)
{
   var message = opensocial.newMessage();
   message.setField(opensocial.Message.Field.TITLE, subject);
   message.setField(opensocial.Message.Field.BODY, body);
   message.setField(opensocial.Message.Field.TYPE, type);
   if (who != undefined)
   {
      opensocial.Container.get().postTo(MyOpenSpace.MySpaceContainer.OSToken,message,who,useCallback);
   }else
   {
      opensocial.Container.get().postTo(MyOpenSpace.MySpaceContainer.OSToken,message);
   }
}



function sendInvite(who,useMessage,useCallBack)
{
   opensocial.requestShareApp(who, opensocial.newMessage(useMessage), useCallBack);
}


