/*
////////////////////////////////////////////////////////////////
//
// Allgemeine JavaScript Funktionen
//
////////////////////////////////////////////////////////////////
*/

////////////////////////////////////////////////////////////////
//
// @method void wOpenURL(url)
//
// @desc Öffnet eine Seite
//
// @return void
//
////////////////////////////////////////////////////////////////

function wOpenURL(url){
  if(location.pathname.indexOf('/weblication/grid5/') != 0){
    top.location.href = url;
  }
}

////////////////////////////////////////////////////////////////
//
// @method void wOpenPopupURL(url, width, height, name)
//
// @desc Öffnet eine Seite in einem Popup
//
// @return void
//
////////////////////////////////////////////////////////////////

function wOpenPopupURL(url, width, height, name){

  var name = name || '';

  if(width == '' || width == ' ' || typeof(width) == 'undefined'){
    width = 786;
  }
  if(height == '' || height == ' ' || typeof(height) == 'undefined'){
    height = 677;
  }

  url = url.replace(/&amp;/g, '&');
  options = ',location=no, menubar=no,toolbar=no,resizable=no,scrollbars=yes,status=no';
  width   = parseInt(width);
  height  = parseInt(height);

  var posLeft = (screen.width / 2)  - (width  / 2);
  var posTop  = (screen.height / 2) - (height / 2);
  //alert(name);
  window.open(url, name, 'top='+posTop+',left='+posLeft+',width='+width+',height='+height+',' + options);
}

////////////////////////////////////////////////////////////////
//
// @method void wSendMailNospam(data)
//
// @desc Öffnet eine E-Mail zum Versenden
//
// @return void
//
////////////////////////////////////////////////////////////////

function wSendMailNospam(data){
  location.href = 'mailto:' + data.replace('|', '@');
}

////////////////////////////////////////////////////////////////
//
// @method void wEmbedNavpoint(id, url, mode)
//
// @desc Öffnet einen eingebetteten Navigationspunkt
//
// @return void
//
////////////////////////////////////////////////////////////////

function wEmbedNavpoint(id, url, mode){

  if(typeof wEditor == 'object'){
    return false;
  }

  if($('#navpoint_' + id).data('hasLoaded') == '1'){
    $('#navEmbed_' + id).show();
  }
  else{
    if(mode == 'embed'){
      url = url.indexOf('?') == -1 ? url + '?viewmode=embed' : url + '&viewmode=embed';
      url = url.replace('[URL]', location.pathname + location.search);
      $.ajax({
        type: "GET",
        url: url,
        success: function(result){

          result = result.replace(/\n/g, '_wNL-').replace(/\s+id="[^"]+"/gim, '').replace(/_wNL-/g, "\n");

          $('#navpoint_' + id).data('hasLoaded', '1');
          $('#navEmbed_' + id).html(result);

          var navpointLeft = $('#navpoint_' + id).offset().left;

          $('#navEmbed_' + id).show();

          var layerLeft = $('#navEmbed_' + id).offset().left;

          var blockMainRight = $('#blockMain').offset().left + $('#blockMain').width();

          if(layerLeft < navpointLeft){
            $('#navEmbed_' + id).css('left', String(navpointLeft - layerLeft - 6) + 'px');
          }

          var layerRight = $('#navEmbed_' + id).offset().left + $('#navEmbed_' + id).width();

          if(layerRight > blockMainRight){
            $('#navEmbed_' + id).css('left', String(parseInt($('#navEmbed_' + id).css('left')) - (layerRight - blockMainRight)) + 'px');
          }

          jQuery('#navpoint_' + id).mouseout(function(){
            $('#navEmbed_' + id).hide();
          });

          jQuery('#navEmbed_' + id).mouseover(function(){
            $('#navEmbed_' + id).show();
          });

          jQuery('#navEmbed_' + id).mouseout(function(){
            $('#navEmbed_' + id).hide();
          });
        }
      });
    }
    else{
      url = url.indexOf('?') == -1 ? url + '?viewmode=blank&parentIframeId=navEmbedIframe_'+id : url + '&viewmode=blank&parentIframeId=navEmbedIframe_'+id;
      url = url.replace('[URL]', location.pathname + location.search);
      $('#navpoint_' + id).data('hasLoaded', '1');

      var iframeEmbed    = document.createElement('iframe');

      iframeEmbed.id          = 'navEmbedIframe_' + id;
      iframeEmbed.className   = 'navLevel1Embed';
      iframeEmbed.frameBorder = '0';
      iframeEmbed.scrolling   = 'no';
      iframeEmbed.src         = url;

      var embedContainer = document.getElementById('navEmbed_' + id);
      embedContainer.appendChild(iframeEmbed);

      var navpointLeft = $('#navpoint_' + id).offset().left;

      $('#navEmbed_' + id).show();

      var layerLeft = $('#navEmbed_' + id).offset().left;

      var blockMainRight = $('#blockMain').offset().left + $('#blockMain').width() - 2;

      if(layerLeft < navpointLeft){
        $('#navEmbed_' + id).css('left', String(navpointLeft - layerLeft - 6) + 'px');
      }

      var layerRight = $('#navEmbed_' + id).offset().left + $('#navEmbed_' + id).width();

      if(layerRight > blockMainRight){
        $('#navEmbed_' + id).css('left', String(parseInt($('#navEmbed_' + id).css('left')) - (layerRight - blockMainRight)) + 'px');
      }

      jQuery('#navpoint_' + id).mouseout(function(){
        $('#navEmbed_' + id).hide();
      });

      jQuery('#navEmbed_' + id).mouseover(function(){
        $('#navEmbed_' + id).show();
      });

      jQuery('#navEmbed_' + id).mouseout(function(){
        $('#navEmbed_' + id).hide();
      });

      //jQuery('.blockContentEmbed').attr('id', 'blockContent');
      //jQuery('.blockContentEmbedInner').attr('id', 'blockContentInner');
    }
  }
}

////////////////////////////////////////////////////////////////
//
// @method void wShowLayerBookmarklet()
//
// @desc Schlägt vor, diese Webseite als App abzulegen
//
// @return void
//
////////////////////////////////////////////////////////////////

function wShowLayerBookmarklet(){

  if(/iPhone|iPod/.test(window.navigator.userAgent)){
    if(window.localStorage){
      if(typeof(window.localStorage['numberBookmarketShown']) == 'undefined' || Number(window.localStorage['numberBookmarketShown']) < 2){
        window.localStorage['numberBookmarketShown'] = String(Number(window.localStorage['numberBookmarketShown'] || 0) + 1);
        var bookmarkletInfo = document.createElement('div');

        bookmarkletInfo.id             = 'wBookmarkletInfo';
        bookmarkletInfo.style.width    = '100%';
        bookmarkletInfo.style.position = 'absolute';
        bookmarkletInfo.style.bottom   = '0';

        var bookmarkletInfoInner = document.createElement('div');
        bookmarkletInfoInner.style.color      = '#ffffff';
        bookmarkletInfoInner.style.border     = 'solid 4px #ffffff';
        bookmarkletInfoInner.style.margin     = '20px';
        bookmarkletInfoInner.style.padding    = '8px';
        bookmarkletInfoInner.style.overflow   = 'hidden';
        bookmarkletInfoInner.style.position   = 'relative';
        bookmarkletInfoInner.style.background = '#cddcf3 -webkit-gradient(linear, left top, left bottom, from(#B5C9D9), to(#6886B0)) no-repeat bottom';
        bookmarkletInfoInner.style.WebkitBorderRadius = '8px';
        bookmarkletInfoInner.style.WebkitBoxShadow    = '0 4px 6px #a0a0a0';

        bookmarkletInfo.appendChild(bookmarkletInfoInner);

        var bookmarkletInfoIcon = document.createElement('img');
        bookmarkletInfoIcon.style.margin = '8px';
        bookmarkletInfoIcon.style.position = 'absolute';

        var linkTags = document.getElementsByTagName('link');
        for(var i = 0; i != linkTags.length; i++){
          if(linkTags[i].getAttribute('rel') == 'apple-touch-icon'){
            bookmarkletInfoIcon.src = linkTags[i].getAttribute('href');
          }
        }

        bookmarkletInfoInner.appendChild(bookmarkletInfoIcon);

        var bookmarkletInfoCloser = document.createElement('img');
        bookmarkletInfoCloser.src = '/weblication/grid5/gui/images/style/bookmarklet_close.png';
        bookmarkletInfoCloser.style.margin = '-4px';
        bookmarkletInfoCloser.style.padding = '2px';
        bookmarkletInfoCloser.style.background = '#ffffff';
        bookmarkletInfoCloser.style.border = 'solid 1px #c0c0c0';
        bookmarkletInfoCloser.style.float  = 'right';

        bookmarkletInfoCloser.onclick = function(){document.getElementById('wBookmarkletInfo').parentNode.removeChild(document.getElementById('wBookmarkletInfo'));window.localStorage['numberBookmarketShown'] = '99'};
        bookmarkletInfoInner.appendChild(bookmarkletInfoCloser);

        var bookmarkletInfoText = document.createElement('div');
        bookmarkletInfoText.style.margin = '8px 8px 8px 100px';
        bookmarkletInfoText.style.position  = 'left';
        bookmarkletInfoText.style.backgroundColor  = 'none';
        bookmarkletInfoText.innerHTML    = 'Klicken Sie unten auf das "+" Zeichen und dann auf "Zum Home-Bildschirm hinzufügen", um diese Seiten als App abzulegen.';

        bookmarkletInfoInner.appendChild(bookmarkletInfoText);

        var bookmarkletArrow = document.createElement('div');
        bookmarkletArrow.style.height             = '23px';
        bookmarkletArrow.style.width              = '100%';
        bookmarkletArrow.style.marginTop          = '-23px';
        bookmarkletArrow.style.position           = 'absolute';
        bookmarkletArrow.style.zIndex             = '10';
        bookmarkletArrow.style.backgroundRepeat   = 'no-repeat';
        bookmarkletArrow.style.backgroundPosition = 'center';
        bookmarkletArrow.style.backgroundImage    = 'url(/weblication/grid5/gui/images/style/arrow_bookmarklet.png)';

        bookmarkletInfo.appendChild(bookmarkletArrow);

        document.body.appendChild(bookmarkletInfo);
      }
      else{
      }
    }
  }
}

jQuery.fn.setViewmode = function(viewmode){

  jQuery.each($(this), function(x){
    var hrefNew = this.getAttribute('href');
    var anchor  = '';
    if(/#[^#]+$/.test(hrefNew)){
      anchor  = hrefNew.replace(/.*#/, '');
      hrefNew = hrefNew.replace(/#.*/, '');
    }

    hrefNew = hrefNew.indexOf('?') != -1 ? hrefNew + '&viewmode=' + viewmode: hrefNew + '?viewmode=' + viewmode;

    if(anchor != ''){
      hrefNew += '#' + anchor;
    }

    this.setAttribute('href', hrefNew);
  });
}

jQuery.fn.addAnalytics = function(viewmode){

  jQuery.each($(this), function(x){
    var href= this.getAttribute('href');
    this.setAttribute('onclick', 'pageTracker._trackPageview(\'' + href + '\');');
  });
}

function getQueryParams(qs) {
    qs = qs.split("+").join(" ");
    var params = {},
        tokens,
        re = /[?&]?([^=]+)=([^&]*)/g;

    while (tokens = re.exec(qs)) {
        params[decodeURIComponent(tokens[1])]
            = decodeURIComponent(tokens[2]);
    }

    return params;
}


////////////////////////////////////////////////////////////////
//
// Initialisieren der Seite
//
////////////////////////////////////////////////////////////////

jQuery(document).ready(function(){
  jQuery('p a[href*=glossar]').attr("class", "glossar").attr("href", function(i, val) {
  return val + '?viewmode=glossar'});

	//ScrollTop
  jQuery('a[href=#top]').click(function(){
	  jQuery('html, body').animate({scrollTop:0}, 'slow');
	  return false;
	});

	//Accordion
	jQuery("#accordion").accordion({
    autoHeight: false,
    navigation: true,
    collapsible: true
	});

	//Fontsize
	jQuery('.FSsize1').click(function(){
	  jQuery("h2").css('font-size', '16px');
    jQuery("p").css('font-size', '12px');
    jQuery(".pictureSubtitle").css('font-size', '10px');
	});
	jQuery('.FSsize2').click(function(){
		jQuery("h2").css('font-size', '18px');
    jQuery("p").css('font-size', '14px');
    jQuery(".pictureSubtitle").css('font-size', '12px');
	});
	jQuery('.FSsize3').click(function(){
	  jQuery("h2").css('font-size', '22px');
    jQuery("p").css('font-size', '18px');
    jQuery(".pictureSubtitle").css('font-size', '16px');
	});

  if(typeof wInitBrowseEdit == 'function'){
    wInitBrowseEdit();
  }
  
  if(typeof wEditor == 'undefined') {

		//SetViemodes
		jQuery("a.videopage").setViewmode('blank');
		jQuery("a.box").setViewmode('blank');
		
		jQuery("a.box").click(function(){jQuery("#fancybox-wrap").attr("class", "box-fancy");});
		jQuery("#loginBox a#login").click(function(){jQuery("#fancybox-wrap").attr("class", "login-fancy");});
		jQuery("#blockRightInner a.apofinder").click(function(){jQuery("#fancybox-wrap").attr("class", "box-apofinder");});
		jQuery("a.ptLink").click(function(){jQuery("#fancybox-wrap").attr("class", "pflichttext-fancy");});
		
// ************************** //
// **START Fancybox Configs **//
// ************************** //
		jQuery("a.box").fancybox(
			{
				"type": "iframe",
				"width": 700,
				"height": 600,
				"titleShow": false,
				"transitionIn" : "none",
				"transitionOut" : "none",
				"hideOnContentClick": true,
				"zoomOpacity": true,
				"zoomSpeedChange": 400,
				"zoomSpeedIn": 400,
				"zoomSpeedOut": 400,
				"overlayShow": true,
				"overlayColor": '#000',
				"overlayOpacity": 0.5
			}
		);
		
		jQuery("#loginBox a#login").fancybox(
			{
				"type": "ajax",
				"titleShow": false,
				"transitionIn" : "none",
				"transitionOut" : "none",
				"hideOnContentClick": false,
				"zoomOpacity": true,
				"zoomSpeedChange": 200,
				"zoomSpeedIn": 400,
				"zoomSpeedOut": 400,
				"overlayShow": true,
				"overlayColor": '#000',
				"overlayOpacity": 0.5
			}
		);
		
		jQuery("#blockRightInner a.apofinder").fancybox(
			{
				"type": "iframe",
				"width": 750,
				"height": 670,
				"titleShow": false,
				"transitionIn" : "none",
				"transitionOut" : "none",
				"hideOnContentClick": false,
				"zoomOpacity": true,
				"zoomSpeedChange": 200,
				"zoomSpeedIn": 400,
				"zoomSpeedOut": 400,
				"overlayShow": true,
				"overlayColor": '#000',
				"overlayOpacity": 0.5,
				scrolling: "false"
			}
		);

		//Pflichttext (Aufruf: z.B. /prostagutt/index.php?pflichttext_id=tebonin)
		jQuery("a.ptLink").fancybox(
			{
				"type": "iframe",
				"width": 890,
				"height": 570,
				"titleShow": false,
				"transitionIn" : "none",
				"transitionOut" : "none",
				"hideOnContentClick": false,
				"zoomOpacity": true,
				"zoomSpeedChange": 200,
				"zoomSpeedIn": 400,
				"zoomSpeedOut": 400,
				"overlayShow": true,
				"overlayColor": '#000',
				"overlayOpacity": 0.5,
				scrolling: "false"
			}
		);

		jQuery("a.videopage").fancybox(
			{
				"type": "iframe",
				"width": 685,
				"height": 570,
				"scrolling": 'no',
				"titleShow": false,
				"transitionIn" : "none",
				"transitionOut" : "none",
				"hideOnContentClick": true,
				"zoomOpacity": true,
				"zoomSpeedChange": 200,
				"zoomSpeedIn": 400,
				"zoomSpeedOut": 400,
				"overlayShow": true,
				"overlayColor": '#000',
				"overlayOpacity": 0.5
			}
		);

		//Disclaimer
		jQuery("a.disclaimer").each(function() {
		  var pdfpath = jQuery(this).attr("href");
		  var pdftitle = jQuery(this).text();
			jQuery(this).attr("href", "/prostagutt/popups/disclaimer.php?viewmode=disclaimer&title="+pdftitle+"&pdf="+pdfpath);
			jQuery(this).fancybox(
				{
					"type": "iframe",
					"width": 400,
					"height": 210,
					"titleShow": false,
					"transitionIn" : "none",
					"transitionOut" : "none",
					"hideOnContentClick": false,
					"hideOnOverlayClick": false,
					"zoomOpacity": true,
					"zoomSpeedChange": 200,
					"zoomSpeedIn": 400,
					"zoomSpeedOut": 400,
					"overlayShow": false,
					"overlayOpacity": 1,
					"showCloseButton": false
				}
			);
		});
// ************************ //
// **END Fancybox Configs **//
// ************************ //

		jQuery('a.glossar').each(function(){var href = jQuery(this).attr("href"); jQuery(this).attr("rel", href);});
		jQuery('a.glossar').cluetip(
			{
				activation: 'click',
				showTitle: false,
				cluetipClass: 'glossar',
				arrows: true,
				dropShadow: false,
				width: '502px',
				sticky: true,
				positionBy: 'auto',
				closeText: 'x',
				topOffset: 10,
				leftOffset: 20
			}
		);

    if(typeof pageTracker != 'undefined'){
      jQuery("a.pdf, a.download").addAnalytics();
    }

		jQuery(".vmdisclaimer a.pdf").each(function() {
			var $_GET = getQueryParams(document.location.search);
			var pdfpath = $_GET["pdf"];
			var pdftitle = $_GET["title"];
			jQuery(this).text(pdftitle).attr("title", pdftitle).attr("target", "_self").attr("style", "display:block;");
			jQuery(this).click(function() {
				window.open(pdfpath, '_parent');
				parent.jQuery.fancybox.close();
			});
		});
		
		//Display disclaimer on load
		jQuery("a.ptLink").click();
  }
});
