function setLayerContent(imageUrl, videoID, headline, alttag, linktext, link) {
    jQuery(".imageLinkText").css("display", "none");
    jQuery(".imageLink").css("display", "none");
    if (imageUrl != "" && imageUrl != null) {
        jQuery("#imgPreview").attr("src", imageUrl);
        jQuery("#imgPreview").css("display", "block");
        jQuery(".youtubeLink").css("display", "none");
        jQuery("#videoEmbed").css("display", "none");
        if (alttag != "" && alttag != null) {
            jQuery("#imgPreview").attr("alt", alttag);
            jQuery("#imgPreview").attr("title", alttag);
        }
        else {
            jQuery("#imgPreview").attr("alt", "");
            jQuery("#imgPreview").attr("title", "");
        }
        if (linktext != null && linktext != "" && link != null && link != "") {
            jQuery(".imageLink").css("display", "block");
            jQuery(".imageLink").attr("href", link);
            jQuery(".imageLinkText").css("display", "block");
            jQuery(".imageLinkText").text(linktext);
            replaceHeader(".imageLinkText");
        } 
    }
    if (videoID != "" && videoID != null) {
        var youtubeUrl = "http://www.youtube.com/v/";
        if ($(location).attr('href').indexOf("https://") >= 0) {
            var youtubeUrl = "https://www.youtube.com/v/";
        }
        jQuery(".imageLink").css("display", "none");
        jQuery("#videoEmbed").attr("src", youtubeUrl + videoID + "?fs=1&amp;hl=en_US");
        jQuery("#videoContainer").css("display", "block");
        var embedTag = document.getElementById("videoEmbed");
        var parent = document.getElementById("innerLayer");
        var oEmbed = parent.appendChild(document.createElement('embed'));
        oEmbed.src = youtubeUrl + videoID + "?fs=1&amp;hl=en_US";
        oEmbed.autoplay = "false";
        oEmbed.id = "videoEmbed";
        oEmbed.type = "application/x-shockwave-flash";
        oEmbed.setAttribute("allowscriptacces", "always");
        oEmbed.setAttribute("allowfullscreen", "true");
        oEmbed.width = "610";
        oEmbed.height = "490";
        oEmbed.setAttribute("wmode", "opaque");
        if (embedTag != null) {
            parent.removeChild(embedTag);
        }

        jQuery(".youtubeLink").css("display", "block");
        jQuery("#videoFrame").css("visibility", "visible");
        jQuery(".youtubeLink").css("visibility", "visible");
        jQuery('#imgPreview').css("display", "none");
        var trackingEventHandlerLabel = document.title + ' ';
        if (headline != null && headline != "") {
            trackingEventHandlerLabel += 'Headline: ' + headline + ' / ';
        }
        trackingEventHandlerLabel += 'VideoID: ' + videoID;
        TrackEvent('Video', 'Embed', trackingEventHandlerLabel);
        jQuery('.youtubeLink').unbind('click');
        jQuery('.youtubeLink').click(function() {
            TrackEvent('Video', 'Exit-Link', trackingEventHandlerLabel);
        });
    }
    
    if (headline != "" && headline != null) {
        jQuery("#layerHeadline").text(headline);
        replaceHeader("#layerHeadline");
        jQuery("#layerHeadline").css("visibility", "visible");
    } else {
        jQuery("#layerHeadline").css("visibility", "hidden");
    }
}

function parseOnClick(element) {
    var onClickCommand = '';
    for (var i = 0; i < element.attributes.length; i++) {
        if (element.attributes[i].name == 'onclick') {
            onClickCommand = element.attributes[i].value;
        }
    }
    var onClickArguments = onClickCommand.substr(onClickCommand.indexOf('(') + 1, onClickCommand.indexOf(')') - onClickCommand.indexOf('(') - 1);

    var argumentStringArray = [];
    var currentArgument = '';
    var isQuoted = false;
    var lastChar = '';
    for (var i = 0; i < onClickArguments.length; i++) {
        if (onClickArguments.charAt(i) == ',' && !isQuoted) {
            argumentStringArray.push(currentArgument);
            currentArgument = '';
        } else {
            currentArgument += onClickArguments.charAt(i);

            if (onClickArguments.charAt(i) == '\'' && lastChar != '\\') {
                isQuoted = !isQuoted;
            }
        }
        lastChar = onClickArguments.charAt(i);
    }
    argumentStringArray.push(currentArgument);
    var arguments = [];
    for (var i = 0; i <argumentStringArray.length; ++i) {
        if (argumentStringArray[i] != 'this') {
            arguments.push(eval(argumentStringArray[i]));
        }
    }
    return arguments;
}

var currentGaleryIndex = -1;

$('.layer_back').click(function() {
    currentGaleryIndex--;
    setGalleryContent(currentGaleryIndex);
});

$('.layer_next').click(function() {
    currentGaleryIndex++;
    setGalleryContent(currentGaleryIndex);
});

function setGalleryContent(index) {
    var embedTag = document.getElementById("videoEmbed");
    var parent = document.getElementById("innerLayer");
    if (embedTag != null && parent != null) {
        parent.removeChild(embedTag);
    }
    $('.innerLayer').fadeOut('slow', function() {
        var items = $('.galleryContent .galleryItem img');
        callerArguments = parseOnClick(items[index]);
        var totalCount = items.length;
        if (index == 0) {
            $('.layer_back #imgBack').css("display", "none");
        } else {
            $('.layer_back #imgBack').css("display", "block");
            $('.layer_back .prevNumber').empty();
            var previndex = index;
            $('.layer_back .prevNumber').text(previndex.toString() + '/' + totalCount.toString());
            replaceHeader('.layer_back .prevNumber');
        }

        if (index < items.length - 1) {
            $('.layer_next #imgNext').css("display", "block");
            $('.layer_next .nextNumber').empty();
            var nextindex = index + 2;
            $('.layer_next .nextNumber').text(nextindex.toString() + '/' + totalCount.toString());
            replaceHeader('.layer_next .nextNumber');
        } else {
            $('.layer_next #imgNext').css("display", "none");
        }

        setLayerContent(callerArguments[0], callerArguments[1], callerArguments[2], callerArguments[4], callerArguments[5], callerArguments[6]);
        if ($('#layer').css('display') == 'none') {
            jQuery("#layer").fadeIn("slow");
        }

        if (callerArguments[0] != null) {
            $('#imgPreview').one("load", function() {
                $('.innerLayer').css('height', $('.innerLayer').height());
                $('.innerLayer').fadeIn('slow');
            });
        } else {
            $('.innerLayer').css('height', $('.innerLayer').height());
            $('.innerLayer').fadeIn('slow');
        }
    });
}

function showLayer(caller, imageUrl, videoID, headline, customId, alttag, linktext, link ) {
    var parent = $(caller).parent();
    if (parent.hasClass('galleryItem')) {
        var items = $('.galleryContent .galleryItem img');
        currentGaleryIndex = items.index(caller);
        setGalleryContent(currentGaleryIndex);
    
    } else {
        $('.layer_back #imgBack').css("display", "none");
        $('.layer_next #imgNext').css("display", "none");
        setLayerContent(imageUrl, videoID, headline, alttag, linktext, link);
    }
   
	jQuery("#layer").center();
	jQuery("#layer").fadeIn("slow", function() {
	    jQuery(document).click(function(event) {
	        if (!jQuery(event.target).isChildOf('#layer')) {
	            closeLayer();
	        }
	    });
	    jQuery(document).keydown(function(event) {
	        if (event.which == '27') {
	            closeLayer();
	        }
	    });
	});
}

(function($) {
    $.fn.extend({
        isChildOf: function( filter_string ) {
          
          var parents = $(this).parents().get();
         
          for ( j = 0; j < parents.length; j++ ) {
           if ( $(parents[j]).is(filter_string) ) {
            return true;
           }
          }
          
          return false;
        }
    });
})(jQuery); 

jQuery.fn.center = function() {
    this.css("position", "fixed");
    var top = ($(window).height() - this.height()) / 2;
    this.css("top", top);
    this.css("left", ($(window).width() - this.width()) / 2 + "px");
    return this;
}

function closeLayer() {
    jQuery("#layer").fadeOut("slow");
    jQuery('#layer #imgPreview').css("display", "none");
    jQuery('#layer #videoFrame').css("display", "none");
    jQuery('#layer #layerHeadline').css("visibility", "hidden");
    jQuery('#layer .youtubeLink').css("display", "none");
    var embedTag = document.getElementById("videoEmbed");
    var parent = document.getElementById("innerLayer");
    if (embedTag != null && parent != null) {
        parent.removeChild(embedTag);
    }
    jQuery(document).unbind('click');
    jQuery(document).unbind('keypress');
}

function addToggle(untoggleAll) {
    var toggle = new Toggle();
    toggle.settings(".toggle-block", ".trigger", ".toggle");

    if (untoggleAll == "false") {
        var hasAnchor = false;
        if (window.location.hash) {
            var hash = window.location.hash.substring(1);
            var element = $("a[name=" + hash + "]");
        }
        hasAnchor = element != null;
        if (hasAnchor) {
            var toggleId = getToggleParent(element);
            if (toggleId == -1){
                toggleId = 0;
            }
            for (var i = 0; i < jQuery(".toggle-block").length; i++) {
                jQuery(".toggle-block")[i].id = ".toggle-block".substr(1) + i;
                if (i != toggleId) {
                    jQuery(".toggle-block".replace(".", "#") + i + " " + ".toggle").slideToggle("slow");
                }
                else {
                    selector = "#toggle-block" + i + " " + ".trigger";
                    if (jQuery(selector).hasClass("not-toggled")) {
                        jQuery(selector).addClass("is-toggled");
                        jQuery(selector).removeClass("not-toggled");
                    } else {
                        jQuery(selector).addClass("not-toggled");
                        jQuery(selector).removeClass("is-toggled");
                    }
                }
           } 
        } 
        else {
            
            for (var i = 0; i < jQuery(".toggle-block").length; i++) {
                jQuery(".toggle-block")[i].id = ".toggle-block".substr(1) + i;
                if (i != 0) {
                    jQuery(".toggle-block".replace(".", "#") + i + " " + ".toggle").slideToggle("slow");
                }
                else {
                    selector = "#toggle-block" + i + " " + ".trigger";
                    if (jQuery(selector).hasClass("not-toggled")) {
                        jQuery(selector).addClass("is-toggled");
                        jQuery(selector).removeClass("not-toggled");
                    } else {
                        jQuery(selector).addClass("not-toggled");
                        jQuery(selector).removeClass("is-toggled");
                    }
                }
            }
        }
    }
}

function getToggleParent(element) {
    var parents = element.parents("*");
    var selector = -1;
    for (var i = parents.length - 1; i >= 0; i--) {
        if (parents[i].id.indexOf("toggle-block") >= 0) {
            try {
                selector = parseInt(parents[i].id.replace("toggle-block", "")); 
            }
            catch (err)
            { }
        }
    }

    return selector;
}

function openPoductPropertiesLayer(id) {
    jQuery(".bigimagefront").css("display", "none")
    jQuery(".bigimagerear").css("display", "block")
    var i = 1;
    for (i; i < 4; i++) {
        if (i == id) {
            jQuery("#layerContent" + id).show("slow");
        }
        else {
            jQuery("#layerContent" + i).css("display", "none"); ;
        }
    }
    
    
}

function closePoductPropertiesLayer(id) {
    jQuery(".bigimagerear").css("display", "none");
    jQuery(".bigimagefront").css("display", "block");
    jQuery("#layerContent" + id).hide("slow");
}

function showSKUText(id) {
    if (jQuery(".skuContainer .text" + id).css("display") == "none") {
        jQuery(".skuContainer .text" + id).show("slow");
    }
}

function hideSKUText(event, id) {
    var current_mouse_target;
    if (event.toElement) {
        current_mouse_target = event.toElement;
    } else if (event.relatedTarget) {
        current_mouse_target = event.relatedTarget;
    }
    var currentHoverObject = jQuery(current_mouse_target);
    var foundDescendant = currentHoverObject.parents('.skuContainer .text' + id);
    if (foundDescendant.length==0) {
        jQuery(".skuContainer .text" + id).hide("slow");
    }
}

function setBackground(bgClassName) {
	jQuery("body").attr('class',bgClassName);
}

function setAdditionalContent(contentPageUrl) {
    $('#additionalContentContainer').load(contentPageUrl + ' #additionalContent', function() {
        replaceHeaders('#additionalContentContainer');
    });
}

function SetProductDetails(themetype, contenturl, productId, headerLines) {
    var bgClassName='bgProductRed';
    if (themetype) {
        bgClassName = 'bgProduct' + themetype;
    }
    setBackground(bgClassName);
    if (contenturl && contenturl!='null') {
        setAdditionalContent(contenturl);
    } else {
        $('#additionalContentContainer').empty();
    }
   
    if ($("#shareBox") != null) {
        $("#shareBox .fb").attr("href", "http://www.facebook.com/sharer.php?t=Products&u=" + encodeURIComponent(window.location.href));
        $("#shareBox .tw").attr("href", "http://twitter.com/?status=Products%20" + encodeURIComponent(window.location.href));
        $("#shareBox .fav").attr("href", "javascript:Lesezeichen('Products', '" + encodeURIComponent(window.location.href) + "');");
    }
    if ($('#fb iframe')) {
        $('#fb').attr('href', window.location.href);
        var currentLikeUrl = $('#fb iframe').attr('src');
        if (currentLikeUrl) {
            var parts = parseUrlParameters(currentLikeUrl);
            for (var i = 0; i < parts.length; i++) {
                if (parts[i] instanceof Array) {
                    if (parts[i][0] == 'href') {
                        parts[i][1] = encodeURIComponent(window.location.href);
                    }
                }
            }
            var newUrl = joinUrl(parts);
            $('#fb iframe').attr('src', newUrl);
        }
    }
    var offset = parseInt(headerLines);
    if (productId != null && !isNaN(parseInt(productId)) && ($('#fbProductLike iframe') != null || $('.share') != null)) {
        var currentLikeProductUrl = $('#fbProductLike iframe').attr('src');
        if (currentLikeProductUrl) {
            var productUrlParts = parseUrlParameters(currentLikeProductUrl);
            for (var i = 0; i < productUrlParts.length; i++) {
                if (productUrlParts[i] instanceof Array) {
                    if (productUrlParts[i][0] == 'href') {
                        productUrlParts[i][1] = encodeURIComponent(window.location.href);
                    }
                }
            }
            var newProductUrl = joinUrl(productUrlParts);
            $('#fbProductLike').attr('href', window.location.href);
            $('#fbProductLike iframe').attr('src', newProductUrl);
        }
        $('.fbproduct').css("display", "block");
        if (!isNaN(offset)) {
            $('.fbproduct').css("top", 303 + (offset*17) + "px");
        }
        $("#productShareBox .fb").attr("href", "http://www.facebook.com/sharer.php?t=Products&u=" + encodeURIComponent(window.location.href));
        $("#productShareBox .tw").attr("href", "http://twitter.com/?status=Products%20" + encodeURIComponent(window.location.href));
        $("#productShareBox .fav").attr("href", "javascript:Lesezeichen('Products', '" + encodeURIComponent(window.location.href) + "');");
    }
    else {
        $('.fbproduct').css("display", "none");
    }
}

function PreloadImage(bgClassName) {
    var $imagePreloadDiv = $('<div class="preload" style="display:block;height:0px;width:0px;padding:0px;margin:0px"></div>');
    $imagePreloadDiv.addClass(bgClassName);
    $('body').append($imagePreloadDiv);
}

function parseUrlParameters(url) {
    var returnParts = [];
    var urlParts = url.split('&');
    for (var i = 0; i < urlParts.length; i++) {
        var keyValue = urlParts[i].split('=');
        if (keyValue.length > 1) {
            returnParts.push(keyValue);
        } else {
            returnParts.push(urlParts[i]);
        }
    }
    return returnParts;
}

function joinUrl(partsArray) {
    var urlParts = [];
    for (var i = 0; i < partsArray.length; i++) {
        if (partsArray[i] instanceof Array) {
            urlParts.push(partsArray[i][0] + '=' + partsArray[i][1]);
        } else {
            urlParts.push(partsArray[i]);
        }
    }
    return urlParts.join('&');
}

function getPureDomain(theurl) {
    var myUrl = theurl.toString();
    if (theurl.substr(0, 4) == 'http') {
        if (myUrl.substr(0, 5) == 'https') {
            myUrl = myUrl.substr(8);
        } else {
            myUrl = myUrl.substr(7);
        }
        if (myUrl.indexOf('/') < 0) {
            return myUrl;
        } else {
            return myUrl.substr(0, myUrl.indexOf('/'));
        }
    } else {
        return '';
    }
}

function TrackEvent(category, action, label) {
    try {
        if (_gaq) {
            _gaq.push(['_trackEvent', category, action, label]);
        }
    }
    catch (err)
    { }
}

jQuery(document).ready(function() {
	var pureDomain = getPureDomain(document.URL);
	$('a[href^="http"]:not([onclick])').each(function(index) {
		if (getPureDomain($(this).attr('href')) != pureDomain && !$(this).hasClass('customTracking')) {
			var trackLabel = document.title;
			if ($(this).children('img').length > 0 && $(this).children('img').first().attr('alt')) {
				trackLabel = trackLabel + ' / Text: ' + $(this).children('img').first().attr('alt');
			} else {
				trackLabel = trackLabel + ' / Text: ' + $(this).text();
			}
			trackLabel += ' / Target: ' + $(this).attr('href');

			$(this).click(function() {
				if ($(this).hasClass('yt')) {
					TrackEvent('Video', 'Exit-Link', trackLabel);
				}
				else {
					TrackEvent('Link', 'Exit-Link', trackLabel);
				}
			});
		}
	});
});

