var P2 = function() {
  return {
    
    gfc_id: '',
    
    page: function() {
      $(function() {
        google.friendconnect.container.setParentUrl('/');
        google.friendconnect.container.loadOpenSocialApi({
          site: P2.gfc_id,
          onload: function() { P2.GFC(); } } );
        P2.partners();
        start_clock();
      });
      return this; 
    },
    
    GFC: function() {
      function setupData(data) {
        var viewer = data.get('viewer').getData();
        var profileNode = document.getElementById('profile');
        if (viewer) {
           profileNode.innerHTML = 
            '<img class="userpic"  src="' + viewer.getField("thumbnailUrl")  + '">' +
            '<p><b>' + viewer.getField("displayName") + '</b></p>' +
            '<ul class="toolbar"><li><a href="#" onclick="google.friendconnect.requestSettings(); return false;">настройки</a></li>' +
            '<li><a href="#" onclick="google.friendconnect.requestInvite(\'Come and pick a color!\'); return false;">пригласить</a></li>' +
            '<li><a href="#" onclick="google.friendconnect.requestSignOut(); return false;">выход</a></li></ul>';
        } else {
            profileNode.innerHTML = '<p><b>Добро пожаловать в наше сообщество!</b></p><div id="signin"></div>';
            google.friendconnect.renderSignInButton({ 
           'id': 'signin',
           'style': 'text',
           'text': 'Вход' });
        }
        P2.viewer = viewer;
      }
      
      var p = {}
      p[opensocial.DataRequest.PeopleRequestFields.PROFILE_DETAILS ] = [
          opensocial.Person.Field.ID,
          opensocial.Person.Field.NAME,
          opensocial.Person.Field.THUMBNAIL_URL,
          opensocial.Person.Field.PROFILE_URL];

      var req = opensocial.newDataRequest();
      req.add(req.newFetchPersonRequest('VIEWER', p), 'viewer');
      req.add(req.newFetchPeopleRequest(
        new opensocial.IdSpec({'userId' : 'OWNER', 'groupId' : 'FRIENDS'}), p), 
        'ownerFriends');
      req.add(req.newFetchActivitiesRequest(new opensocial.IdSpec({'userId' : 'OWNER', 'groupId' : 'FRIENDS'})), 'activities');
      req.send(setupData);
   },

    partners: function() {
      var buffer = document.getElementById('partner-buffer');
      if (buffer) {
        document.getElementById('partner-area').appendChild(buffer);
        $(buffer).show();
      }
      $('.partner').show(); 
    },
    
    appMenu:  function(selector) {
      var menu = $(selector || '.app-menu');

      function show(item) {
        menu.find('dl dd:visible').hide();
        menu.find('dl dt').removeClass('hover');;

        if ($(item).length > 0) {
          menu.find('div').hide();
          $(item).parent().next('dd').show();
          $(item).parent().addClass('hover');
        } else {
          menu.find('div').show();      
        }
      }
      menu.hover(function() {}, function() { show(menu.find('dl dt.active a'));});
      menu.find('dl dt a').mouseover(function() { show(this); });
  
      return this;
    },
    
    scroller: function(selector, items) {
      $(selector || '.scroller').serialScroll({
        target: 'div.c',
        items:  items || 'dl',
        prev:   'div.l a',
        next:   'div.r a',
        start:  0,
        force:  true,
        cycle:  false });
      return this;
    },

    votes: function() {
      $(function() {  
    	var vote =  $('#vote');
    	vote.attr('href', 'javascript:void(0);');
    	vote.css( {
            'color'           : '#fff',
            'text-decoration' : 'underline',
            'cursor'          : 'pointer'
          });
    	vote.click(function() {
          $('#spinner').css('display', 'block');
          $.post(window.location.href.substring(0, window.location.href.lastIndexOf('/')) + '/vote.html',
            {},
            function(num_of_votes) {
            	$('#num_of_votes').html(num_of_votes);
                $('#spinner').css('display', 'none');
            },
            'text');
          return false;
        });
      }); 
    }
    
  };
}();
