function EnableFlattrButton(enabler)
{
  SwitchSocialButton(enabler, "flattr", arguments[1]);
  
  if (typeof FlattrLoader != "undefined")
  {
    onLoadEnableFlattrButton(enabler.id);
  }
  else
  {
    var s = document.createElement('script');
    var dest = document.getElementById('socialscripts');

    s.type = 'text/javascript';
    s.src = 'https://api.flattr.com/js/0.6/load.js?mode=manual&uid=mhohner&button=compact';
    s.setAttribute("onload", "onLoadEnableFlattrButton('"+enabler.id+"');");

    dest.parentNode.insertBefore(s, dest);
  }
}

function onLoadEnableFlattrButton(enablerID)
{
  var enabler = document.getElementById(enablerID);
  var fButton = enabler.nextSibling;

  if (fButton.className == "FlattrButton")
  {
    FlattrLoader.loadButton(fButton);
  }
}

function EnableAllFlattrButtons()
{
  var buttons;
  var i;
  
  buttons = document.getElementsByTagName('A');
  for(i = (buttons.length - 1); i >= 0 ; i--) 
  {
    if (buttons[i].className == "FlattrButton")
    {
      var enabler = buttons[i].previousSibling;
      
      EnableFlattrButton(enabler, true);
    }
  }
  buttons = document.getElementsByTagName('IFRAME');
  for(i = (buttons.length - 1); i >= 0 ; i--)
  {
    if (buttons[i].className == "FlattrButton")
    {
      var enabler = buttons[i].previousSibling;

      SwitchSocialButton(enabler, "flattr", true);
    }
  }
}

function DisableAllFlattrButtons()
{
  var buttons;
  var i;

  buttons = document.getElementsByTagName('IFRAME');
  for(i = (buttons.length - 1); i >= 0 ; i--)
  {
    if (buttons[i].className == "FlattrButton")
    {
      var enabler = buttons[i].previousSibling;

      SwitchSocialButton(enabler, "flattr", false);
    }
  }
}



function EnableGoogleButton(enabler)
{
  SwitchSocialButton(enabler, "google", arguments[1]);
  
  if (typeof gapi != "undefined")
  {
    onLoadEnableGoogleButton(enabler.id);
  }
  else
  {
    var s = document.createElement('script');
    var dest = document.getElementById('socialscripts');

    s.type = 'text/javascript';
    s.src = 'https://apis.google.com/js/plusone.js';
    if (window.navigator.appName != "Microsoft Internet Explorer")
      s.innerHTML = "{lang: 'de', parsetags: 'explicit'}";
    else
      s.text = "{lang: 'de', parsetags: 'explicit'}";
    s.setAttribute("onload", "onLoadEnableGoogleButton('"+enabler.id+"');");

    dest.parentNode.insertBefore(s, dest);
  }
}

function onLoadEnableGoogleButton(enablerID)
{
  var enabler = document.getElementById(enablerID);
  var fButton = enabler.nextSibling;

  if (fButton.nodeName == "DIV")
  {
    gapi.plusone.render(fButton.id, {"size": "medium", "count": true, "href": fButton.title });
  }
}

function EnableAllGoogleButtons()
{
  var buttons;
  var i;
  
  buttons = document.getElementsByTagName('DIV');
  for(i = (buttons.length - 1); i >= 0 ; i--) 
  {
    if (buttons[i].className == "plusone")
    {
      var enabler = buttons[i].previousSibling;
      
      if (buttons[i].innerHTML == "")
        EnableGoogleButton(enabler, true);
      else
        SwitchSocialButton(enabler, "google", true);
    }
  }
}

function DisableAllGoogleButtons()
{
  var buttons;
  var i;

  buttons = document.getElementsByTagName('DIV');
  for(i = (buttons.length - 1); i >= 0 ; i--)
  {
    if (buttons[i].className == "plusone" &&
        buttons[i].innerHTML != "")
    {
      var enabler = buttons[i].previousSibling;

      SwitchSocialButton(enabler, "google", false);
    }
  }
}

function EnableFacebookButton(enabler)
{
  var fbFrame = enabler.nextSibling;
  
  if (fbFrame.nodeName == "IFRAME" &&
      fbFrame.className == "facebook")
  {
    if (fbFrame.title != "")
    {
      fbFrame.src = fbFrame.title;
      fbFrame.title = "";
      fbFrame.style.display = "inline";
    }
    SwitchSocialButton(enabler, "facebook", arguments[1]);
  }
}

function EnableAllFacebookButtons()
{
  var buttons;
  var i;
  
  buttons = document.getElementsByTagName('IFRAME');
  for(i = (buttons.length - 1); i >= 0 ; i--) 
  {
    if (buttons[i].className == "facebook")
    {
      var enabler = buttons[i].previousSibling;
      
      EnableFacebookButton(enabler, true);
    }
  }
}

function DisableAllFacebookButtons()
{
  var buttons;
  var i;

  buttons = document.getElementsByTagName('IFRAME');
  for(i = (buttons.length - 1); i >= 0 ; i--)
  {
    if (buttons[i].className == "facebook")
    {
      var enabler = buttons[i].previousSibling;

      SwitchSocialButton(enabler, "facebook", false);
    }
  }
}

function EnableTwitterButton(enabler)
{
  SwitchSocialButton(enabler, "twitter", arguments[1]);
  if (false)
  {
    onLoadEnableTwitterButton(enabler.id);
  }
  else
  {
    var s = document.createElement('script');
    var dest = document.getElementById('socialscripts');

    s.type = 'text/javascript';
    s.src = 'http://platform.twitter.com/widgets.js';
    s.setAttribute("onload", "onLoadEnableTwitterButton('"+enabler.id+"');");

    var fButton = enabler.nextSibling;

    fButton.className= "twitter-share-button";
    dest.parentNode.insertBefore(s, dest);
  }
}

function onLoadEnableTwitterButton(enablerID)
{
  var enabler = document.getElementById(enablerID);
  var fButton = enabler.nextSibling;
  
  fButton.style.display= "";
}

function EnableAllTwitterButtons()
{
  var buttons;
  var i;
  
  buttons = document.getElementsByTagName('A');
  for(i = (buttons.length - 1); i >= 0 ; i--) 
  {
    if (buttons[i].className == "twitter-share-button-dis")
    {
      var enabler = buttons[i].previousSibling;
      
      EnableTwitterButton(enabler, true);
    }
  }

  buttons = document.getElementsByTagName('IFRAME');
  for(i = (buttons.length - 1); i >= 0 ; i--)
  {
    if (buttons[i].className == "twitter-share-button twitter-count-horizontal")
    {
      var enabler = buttons[i].previousSibling;

      SwitchSocialButton(enabler, "twitter", true);
    }
  }
}

function DisableAllTwitterButtons()
{
  var buttons;
  var i;

  buttons = document.getElementsByTagName('IFRAME');
  for(i = (buttons.length - 1); i >= 0 ; i--)
  {
    if (buttons[i].className == "twitter-share-button twitter-count-horizontal")
    {
      var enabler = buttons[i].previousSibling;

      SwitchSocialButton(enabler, "twitter", false);
    }
  }
}

var textButtonEnabled = "Die Einbindung des Buttons dieses Dienstes oder Netzes,"+
           " und damit auch die Datenübermittlung dorthin, ist"+
           " aktiviert. Klicken Sie hier ein weiteres Mal, um in dieser Session"+
           " alle Buttons des gleichen Dienstes automatisch zu aktivieren.";
var textButtonAuto = "Die Einbindung des Buttons dieses Dienstes oder Netzes,"+ 
           " und damit auch die Datenübermittlung dorthin, ist"+
           " automatisch aktiviert. Klicken Sie hier ein weiteres Mal, um weitere"+
           " Buttons des gleichen Dienstes manuell zu aktivieren.";

function SwitchSocialButton(enabler, service, auto)
{
  if (auto)
  {
    enabler.src = "/images/social_enabled_auto.png";
    enabler.title = textButtonAuto;

    enabler.setAttribute("onclick", "SendSocialButtonState('"+enabler.id+"', '"+service+"', 'manual');");
  }
  else
  {
    enabler.src = "/images/social_enabled.png";
    enabler.title = textButtonEnabled;

    enabler.setAttribute("onclick", "SendSocialButtonState('"+enabler.id+"', '"+service+"', 'auto');");
  }
}

function SendSocialButtonState(enablerID, service, state)
{
  var client = new XMLHttpRequest();
  client.open("POST", "/useraction.php");
  client.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
  client.setRequestHeader("X-Request-Type", "internal");
  client.onreadystatechange = HandleSendSocialButtonStateResponse;
  client.myEnablerID = enablerID;
  client.myService = service;
  client.myState = state;
  
  var Params ="action=sn_settings"+
              "&service=" + encodeURIComponent(service)+
              "&state=" + encodeURIComponent(state);
  client.send(Params);
}

function HandleSendSocialButtonStateResponse()
{
  if (this.readyState == 4)
  {
    if (this.status > 0)
    {
      var enabler = document.getElementById(this.myEnablerID);
      
      if (this.myState == "auto")
      {
        switch(this.myService)
        {
          case "flattr":
            EnableAllFlattrButtons();
            break;
            
          case "twitter":
            EnableAllTwitterButtons();
            break;
            
          case "google":
            EnableAllGoogleButtons();
            break;
          
          case "facebook":
            EnableAllFacebookButtons();
            break;
        } 
      }
      else
      {
        switch(this.myService)
        {
          case "flattr":
            DisableAllFlattrButtons();
            break;

          case "twitter":
            DisableAllTwitterButtons();
            break;

          case "google":
            DisableAllGoogleButtons();
            break;

          case "facebook":
            DisableAllFacebookButtons();
            break;
        }
      }
    }
  }
}

