if (typeof window.console != 'object') {
  window.console = {
    log: function() {},
    debug: function() {},
    error: function() {},
    dir: function() {}
  };
}

Drupal.sonyConnect = {
  onPopupClose: function() {
    var settings = Drupal.settings.sonyConnect.networks[Drupal.sonyConnect.activeNetwork];
    // Create a hidden link to make opening the popup easier. ugh.
    var context = $('<div><a href="' + settings.authorize.close_url + '" class="ctools-use-modal"></a></div>')
      .hide()
      .appendTo($('body'));
    Drupal.attachBehaviors(context);
    $('a.ctools-use-modal', context).click();
  },
  
  openPopup: function(network) {
    if (typeof Popups != 'undefined') {
      Popups.addOverlay();
      Popups.addLoading();
    }

    Drupal.sonyConnect.activeNetwork = network;
    var defaultHandler = true;
    if (typeof Drupal.sonyConnect[network].connect == 'function') {
      defaultHandler = Drupal.sonyConnect[network].connect();
    }
    
    if (defaultHandler === false) {
      return;
    }

    var settings = Drupal.settings.sonyConnect.networks[network];
    var options = 'toolbar=0,scrollbars=0,statusbar=0,menubar=0,resizable=0';
    options += ',width=' + settings.authorize.width;
    options += ',height=' + settings.authorize.height;
    var popup = window.open(settings.authorize.open_url, 'connect', options);
    if (popup == null || typeof popup == 'undefined') {
    }
    else {
      popup.focus();
    }
  },

  activeNetwork: null
};

$(function(){
  $.each(Drupal.settings.sonyConnect.networks, function(k, v) {
    if (typeof Drupal.sonyConnect[k] !== 'undefined' && typeof Drupal.sonyConnect[k].init == 'function') {
      Drupal.sonyConnect[k].init();
    }
  });
});

Drupal.behaviors.sonyConnect = function(context) {
  $.each(Drupal.settings.sonyConnect.networks, function(k, v) {
    $('.sony-connect-' + k + ':not(.sony-connect-processed)', context)
      .addClass('sony-connect-processed')
      .click(function() {
        this.blur();
        Drupal.sonyConnect.openPopup(this.rel);
        return false;
      }
    );
  });
};

Drupal.behaviors.sonyConnectLogout = function(context) {
  var settings = Drupal.settings.sonyConnect;
  if (settings.current && settings.current.network && settings.current.network == 'facebook') {
    $('a[href*="/logout"]:not(.sony-connect-logout-processed)')
      .addClass('sony-connect-logout-processed')
      .click(function() {
        FB.Connect.logoutAndRedirect(this.href);
        return false;
      }
    );
  }
}

Drupal.CTools.AJAX.commands.form_submit = function(data) {
  $(data.selector)[0].submit();
}

