// myspace initializer

function zyMyspaceInit(auth_url, redirect_url, errorCB)
{
  // need a global ref for callback
  window.zyMyspaceInit = this;

  // instance vars
  this.auth_url = auth_url;
  this.redirect_url = redirect_url;
  this.errorCB = errorCB;

  // prepare url for get args
  this.prepUrl = function(url)
  {
    var lastChar = url[url.length-1];
    if(url.indexOf('?')==-1) url += '?';
    else if(lastChar!='?'&&lastChar!='&') url += '&';
    return url;
  };
  
  // report error
  this.error = function(msg)
  {
    if(typeof(this.errorCB)=='function') this.errorCB(msg);
  };
  
  // initiate signature call
  this.getSig = function()
  {
    var params = {};
    params[opensocial.ContentRequestParameters.AUTHORIZATION] = 
      opensocial.ContentRequestParameters.AuthorizationType.SIGNED;
    params[opensocial.ContentRequestParameters.METHOD] = 
      opensocial.ContentRequestParameters.MethodType.GET;
    //params[opensocial.ContentRequestParameters.CONTENT_TYPE] = 
      //opensocial.ContentRequestParameters.ContentType.HTML;
    opensocial.makeRequest(this.auth_url, this.getSigCB, params);
  };
  
  this.getSigCB = function(responseText, error)
  {
    // get global ref
    var _this = window.zyMyspaceInit;
  
    // get data response and check for errors
    var response;
    try
    {
      eval('response = '+responseText+';');
    } catch(ex) {
      _this.error('bad eval');
      return;
    }
    
    if(!response||!response.success)
    {
      _this.error('failed request');
      return;
    }
    
    // get user_id and sig from the response
    var user_id = response.rsp.user_id;
    var sig = response.rsp.sig;
    
    // get the opensocial params
    var loc = window.location.href;

    var reToken =  /opensocial_token=([^&]*)/i;
    var reMode = /opensocial_surface=([^&]*)/i;
//    var reKey = /opensocial_consumer_key=([^&]*)/i;
    
    // osToken = reToken.exec(loc)[1];
    // osMode = reMode.exec(loc)[1];
//    osKey = reKey.exec(loc)[1];
    
    // create the url
    var url = _this.prepUrl(_this.redirect_url);
    url += 'zy_sig_user_id='+user_id;
    url += '&zy_sig='+sig;
    // url += '&opensocial_token='+osToken;
    // url += '&opensocial_surface='+osMode;
//    url += '&opensocial_consumer_key='+osKey;
    
    // set frame location
    window.location = url;
  };
  
  // start sequence
  this.getSig();
 
}
