var MAIN_HOST = 'http://ork.mindjolt.com';
var ORK_HOST = MAIN_HOST + '/ork';

function ctrAdd(div) {
}

function ctrRecord(e) {
}

// appends data to a url
function appendToUrl(url, data) {

    if (url.indexOf("?") == -1) {
      finalUrl = url + "?" + gadgets.io.encodeValues(data);
    } else {
      finalUrl = url + "&" + gadgets.io.encodeValues(data);
    }

  return finalUrl;
}

// navigates to a url
function navigateTo(url) {
  // Full navigation, for use when requestNavigateTo works 100%.
  var params = {}; 
  params['page'] = url; 
  gadgets.views.requestNavigateTo(new gadgets.views.View('canvas'), params);   
}

function displayIt() {
        display();
}

function display() {
  var surface = gadgets.views.getCurrentView();

  var params = gadgets.views.getParams();
  var urlToDisplay = params['page'];

  if (urlToDisplay)
    displayPage(urlToDisplay, {});
  else
    displayPage("/surface/" + surface.getName() + ".jsp", {});
}

// displays the page at the url
function displayPage(url, params) {
  var data = {};
  var prefs = new gadgets.Prefs();

  if (prefs.getCountry()) {
    data['country'] = prefs.getCountry();
  }
  if (prefs.getLang()) {
    data['lang'] = prefs.getLang();
  }

  var req = opensocial.newDataRequest();

  req.add(req.newFetchPersonRequest(opensocial.DataRequest.PersonId.OWNER), 'owner');
  req.add(req.newFetchPersonRequest(opensocial.DataRequest.PersonId.VIEWER), 'viewer');
  req.add(req.newFetchPeopleRequest('VIEWER_FRIENDS'), 'viewerFriends');

  req.send(function (dataResponse) {
    var owner = dataResponse.get('owner').getData();
    var viewer = dataResponse.get('viewer').getData();

    params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.TEXT;

    if (gadgets.views.getCurrentView().getName() == 'canvas') {
      params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.SIGNED;
    } else {
      var ownerId = owner.getField(opensocial.Person.Field.ID);

      data['opensocial_owner_id']  = ownerId;

      if (viewer) {
        var viewerId = viewer.getField(opensocial.Person.Field.ID);
        data['opensocial_viewer_id']  = viewerId;
      }
    }

    if (viewer) {
      data['is_app_user'] = '1';
      var fullName = viewer.getDisplayName();

      if (fullName)
        data['full_name'] = fullName;
      else
        data['full_name'] = '';
    }

    var viewerFriends = dataResponse.get('viewerFriends').getData();
    if (viewerFriends) {
      var friendIds = '';

      viewerFriends.each(function(person) {
        if (friendIds == '') {
          friendIds += person.getField(opensocial.Person.Field.ID);
        } else {
          friendIds += ',' + person.getField(opensocial.Person.Field.ID);
        }
      });

      data['friend_ids'] = friendIds;
    }

    runMakeRequest(url, params, data);
  });
}

// runs the request for displaying the page at the url
function runMakeRequest(url, params, data) {
  params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST; 
  params[gadgets.io.RequestParameters.POST_DATA] = gadgets.io.encodeValues(data);

  gadgets.io.makeRequest(ORK_HOST + url, function (response) {
    if (!response || !response.data) { 
      document.getElementById('content').innerHTML = "<center><br /><br /><h1>There was a problem processing your request.  MindJolt Games and Orkut are working to fix any problems you are seeing.</h1><h1>Please refresh to try again.</h1></center>";
      return; 
    } 
    document.getElementById('content').innerHTML = response.data;
    gadgets.window.adjustHeight();

    var redirElement = document.getElementById('redirect');

    if (redirElement) {
      if (redirElement.href) {
        window.parent.location = redirElement.href;
      } else {
        displayPage(redirElement.value, {});
      }
    } else {
      var surface = gadgets.views.getCurrentView();

      if (surface.getName() == 'canvas') {
        ctrAdd(document.getElementById('content'));
      }

      var analytics = document.getElementById('analytics');

      if (analytics) {
        var pageTracker = _gat._getTracker(analytics.value);

        pageTracker._initData();

        var analyticsPage = document.getElementById('analyticsPage');
        if (analyticsPage) {
          pageTracker._trackPageview(analyticsPage.value);
        } else {
          pageTracker._trackPageview();
        }
      }

      var scrollToTop = document.getElementById('scrollToTopId');
      if (scrollToTop) {
        scrollToTop.focus();
        scrollToTop.blur();
      }

      var activityTitle = document.getElementById('activity_title');
      var activityBody = document.getElementById('activity_body');

      if (activityTitle && activityBody) {
        var activityParams = {};

        activityParams[opensocial.Activity.Field.TITLE] = activityTitle.value;
        activityParams[opensocial.Activity.Field.BODY] = activityBody.value;

        var activity = opensocial.newActivity(activityParams);

        opensocial.requestCreateActivity(activity, opensocial.CreateActivityPriority.HIGH);
      }
    }
  }, params );
}

var oldGameIframeHeight = 0;
var oldGameIframeWidth = 0;

function hideGameIframe() {
  var gameIframe = document.getElementById("game_iframe");

  if (gameIframe) {
    oldGameIframeHeight = gameIframe.height;
    oldGameIframeWidth = gameIframe.width;
    gameIframe.height = 0;
    gameIframe.width = 0;
  }
}

function showGameIframe() {
  var gameIframe = document.getElementById("game_iframe");

  if (gameIframe) {
    gameIframe.height = oldGameIframeHeight;
    gameIframe.width = oldGameIframeWidth;
    oldGameIframeHeight = 0;
    oldGameIframeWidth = 0;
  }
}

function sendMessage(url, messageTitle, messageBody) {
  var params = [];
  var recipient = opensocial.DataRequest.Group.OWNER_FRIENDS;
  params[opensocial.Message.Field.TITLE] = messageTitle;

  var message = opensocial.newMessage(messageBody, params);

  hideGameIframe();

  opensocial.requestSendMessage(recipient, message, function(response) {
    showGameIframe();

    var data = {};

    if (response.getData() && response.getData().recipientIds) {
      data['recipients'] = response.getData().recipientIds;
    }

    if (response.getErrorCode()) {
      if (response.getErrorCode() == "cancelled") {
        data['cancel'] = '1';
      } else {
        data['error'] = '1';
      }
    }

    var params = {};

    params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST; 
    params[gadgets.io.RequestParameters.POST_DATA] = gadgets.io.encodeValues(data);
    params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.SIGNED;

    gadgets.io.makeRequest(url, function (response) {}, params);
  });
}

function toggle_high_scores() {
  if (document.getElementById('friend_high_scores_table').style.display != "none") {
    document.getElementById('friend_high_scores_table').style.display = "none";
    document.getElementById('global_new_high_scores_table').style.display = "";
  } else {
    document.getElementById('global_new_high_scores_table').style.display = "none";
    document.getElementById('friend_high_scores_table').style.display = "";
  }
}

function toggle_recently_played() {
  if (document.getElementById('friends_recently_played_table').style.display != "none") {
    document.getElementById('friends_recently_played_table').style.display = "none";
    document.getElementById('your_recently_played_table').style.display = "";
  } else {
    document.getElementById('your_recently_played_table').style.display = "none";
    document.getElementById('friends_recently_played_table').style.display = "";
  }
}

