var NEWSLETTER_CONTAINER_ID = "#g-lock-double-opt-in-manager",
    NEWSLETTER_ERROR_CLASS = "newsletter-error",
    NEWSLETTER_LOADING_CLASS = "loading",
    NEWSLETTER_SUCCESS_CLASS = "success",
    RSS_FEED_ID = "rss-feed";

jQuery(function($){
  var elem;

  // ================= teaser slider ====================
  elem = $('#teaser_slider');
  if (elem.length) {
    elem.loopedSlider({
      container: ".teaser_container",
      slides: ".teaser_slides",
      containerClick: false,
      autoStart: 4000,
      restart: 5000,
      slidespeed: 300
      // fadespeed: 1000
      // addPagination: false
    });
  }

  // ================= image slider ====================
  elem = $('#image_slider');
  if (elem.length) {
    elem.loopedSlider({
      container: ".image_container",
      slides: ".image_slides",
      containerClick: false,
      autoStart: 4000,
      restart: 5000,
      slidespeed: 300,
      onStartup: function() {
        try {
          var pos = window.location.href.match(/position=([0-9]+)/)[1];
          $('a[rel="'+pos+'"]', $('#image_slider')).click();
        } catch (ex) {
          // ntd
        }
      }
      // fadespeed: 1000
      // addPagination: true
    });
  }

  // ============= newsletter dialog ====================

  function subscribeToNewsletter($form) {
    try {
      $(NEWSLETTER_CONTAINER_ID).addClass(NEWSLETTER_LOADING_CLASS).html(newsletterLoadingIndicator());
      $.ajax({
        type: 'POST',
        url: $form.attr("action"),
        data: $form.serialize()+"&gsomsubscribe=+",
        success: function(text) {
          var msg = extractNewsletterMessage(text);
          $(NEWSLETTER_CONTAINER_ID).removeClass(NEWSLETTER_LOADING_CLASS).addClass(NEWSLETTER_SUCCESS_CLASS).html(msg);
        }
      });
    } catch (ex) {
      // console.error(ex);
    }
  }

  elem = $("#colorbox");
  if (elem.length) {
    elem.addClass("closed");
  }
  
  elem = $("a.cobra_newsletter");
  if (elem.length) {
    elem.colorbox({
      width:"610",
      height: "365", // 220
      inline: true,
      href: NEWSLETTER_CONTAINER_ID,

      onComplete: function() {
        var rssHtml = '<div id="'+RSS_FEED_ID+'">'+$("#rss-feed-dialog-container").html()+'</div>';
        $("#cboxLoadedContent").prepend(rssHtml);
      },

      onClosed: function() {
        $("#colorbox").addClass("closed").removeClass("opened");
      },

      onOpen: function() {
        $("#colorbox").addClass("opened").removeClass("closed");

        $("."+NEWSLETTER_ERROR_CLASS, $(NEWSLETTER_CONTAINER_ID)).each(function(){ $(this).removeClass(NEWSLETTER_ERROR_CLASS); });
        $("label", $(NEWSLETTER_CONTAINER_ID)).each(function() {
          var input = $(this).next("input"),
              label = $(this).html();

          function toggleLabel(inputValue, replaceValue, inputElem) {
            return function() {
              if (inputElem.val() === inputValue) {
                inputElem.val(replaceValue);
              }
            };
          }

          input.val(label);
          input.unbind("click");
          input.unbind("blur");
          input.click(toggleLabel(label, "", input));
          input.blur(toggleLabel("", label, input));
        });
      }
    });
  }

  var newsletterForm = 'form[name="gsom-optin"]';

  $(newsletterForm).submit(function(e) { return false; });
  
  $(window).bind("newsletter:subscribe", function(e) {
    subscribeToNewsletter($(newsletterForm));
  });
});

(function($) {
  
  function toggleCss(cssSelector, key, valA, valB) {
    var $el = $(cssSelector);
    $el.css(key, ($el.css(key) === valA ? valB : valA));
  }

  window.toggleQuickLinks = function toggleQuickLinks() {
    toggleCss("#quicklinks2", "display", "none", "block");
  };

  window.toggleReferences = function toggleReferences() {
    toggleCss("#reffilter", "display", "none", "block");
  };
  
})(jQuery);

function extractNewsletterMessage(text) {
  var NEWSLETTER_BEGIN_TAG = "###newsletter:begin###";
  var NEWSLETTER_END_TAG = "###newsletter:end###";

  var tagBegin = text.lastIndexOf(NEWSLETTER_BEGIN_TAG);
  if (tagBegin > 0) {
    tagBegin += NEWSLETTER_BEGIN_TAG.length;
  }
  var tagEnd = text.lastIndexOf(NEWSLETTER_END_TAG);
  if (tagBegin > 0 && tagEnd > 0) {
    return text.slice(tagBegin, tagEnd);
  }
  return undefined;
}

function newsletterLoadingIndicator() {
  return jQuery("#newsletter_loader").html();
}

function resendNewsletterEmail(url) {
  var $ = jQuery;
  try {
    $(NEWSLETTER_CONTAINER_ID).addClass(NEWSLETTER_LOADING_CLASS).html(newsletterLoadingIndicator());
    $.ajax({
      type: 'GET',
      url: url,
      success: function(text) {
        var msg = extractNewsletterMessage(text);
        $(NEWSLETTER_CONTAINER_ID).removeClass(NEWSLETTER_LOADING_CLASS).addClass(NEWSLETTER_SUCCESS_CLASS).html(msg);
      }
    });
  } catch (ex) {
    // ntd
  }
  return false;
}

//Einbetten von SWFs (geht nur bei Referenzen)
function embedSwfAttachment(swf,id){
  //slice   
  var flashvars = {};
  var params = {};
  params.menu = "false";
  params.scale = "noscale";
  params.wmode = "window";
  var attributes = {};
  
  swfobject.embedSWF(swf, id, 740, 450, "10.0.32", "", flashvars, params, attributes);
}  

function embedFlvAttachment(player,flv,skin,id){
  //slice   
  var flashvars = {};
  flashvars.url = flv;
  flashvars.skin = skin;
  var params = {};
  params.menu = "false";
  params.scale = "noscale";
  params.wmode = "window";
  params.color = "#ffffff";
  var attributes = {};
  
  swfobject.embedSWF(player, id, 528, 321, "10.0.32", "", flashvars, params, attributes);
}  

function doOnClick(){
  if(cobra_ref_out && document.getElementById('reffilter').style.display == 'block')toggleReferences();
  if(cobra_links_out && document.getElementById('quicklinks2').style.display == 'block')toggleQuickLinks();
}

function setIcon(diff){
  var he = window.innerHeight;  
  while(!he){   
    he = document.body.clientHeight;
    if(he > 2000)he=810;
  }     
  he=he-diff;
  document.getElementById('socialicons').style.top = he+'px';
}

//Für Referenzenliste
var cobra_ref_out = false;
var cobra_links_out = false;

