﻿/// <reference path="S:\SupportFiles\jQuery\documentation\jquery-1.4.1-vsdoc.js" />

/* Legacy functions (needed in old applications) */
var siteIframes = new IFrames.iframes();

var arrLegacyFunctions = new Array();
function addFunction(fReference) {
    /* Deze functie voegt een functie-pointer toe aan de array van functies die uitgevoerd wordt in de body onload. */
    arrLegacyFunctions[arrLegacyFunctions.length] = fReference;
}

function callLegacyFunctions() {
    for (var i = 0; i < arrLegacyFunctions.length; i++) {
        arrLegacyFunctions[i]();
    }
}


/* Helper functions and global variables*/
Math.randInt = function(min, max) {
    return Math.floor(Math.random() * (max - min)) + min;
}

function isFunction(testfunc) {
    return testfunc !== undefined && typeof testfunc == "function";
}

function changeTitle(title) {
    var dividerIndex = document.title.lastIndexOf(" - ");
    var titleEnding = document.title.substring(dividerIndex);
    document.title = title + titleEnding;
}

function ObjectPosition(obj) {
    var curleft = 0;
    var curtop = 0;
    if (obj.offsetParent) {
        do {
            curleft += obj.offsetLeft;
            curtop += obj.offsetTop;
        } while (obj = obj.offsetParent);
    }
    return [curleft, curtop];
}

function openFirstThemeItem(theme) {
    if (theme === undefined) {
        theme = getOpenedTheme();
    }
    var softlink = theme.find('.menu a.softlink');
    if (softlink.exists()) {
        loadThemeItem(softlink.attr('href'), showThemeItem);
    }
}

function isThemeOpened(theme) {
    var themePage;
    if (theme.hasClass('themepage')) {
        themePage = theme;
    } else {
        themePage = theme.find(".themepage");
    }
    return themePage.is(":visible");
}


function getOpenedTheme() {
    return $(".accordionmenu .theme").has(".themepage:visible");
}

function getThemeItemFromHref(href) {
    return $('#id_' + getReferenceOfHref(href));
}

// Loads a themeitem or themetegels document using an ajax call, if needed
function loadThemeItem(ref, queuedAction, currentTheme) {
    if (currentTheme === undefined) {
        currentTheme = getOpenedTheme();
    }

    var themeitem = getThemeItemFromHref(ref);
    if (themeitem.exists()) {
        // No need for an ajax call
        if (isFunction(queuedAction)) {
            queuedAction(themeitem);
        }
    } else {
        // Get themeitem using an ajax call
        var url = getPageId(ref);
        if (ref.indexOf('?') == -1) {
            url += '?';
        } else {
            url += '&';
        }
        url += "partial=document";
        $.get(url, function(data) {
            var container = currentTheme.find('.themeitems');
            if (container) {
                container.append(data);
                if (isFunction(queuedAction)) {
                    var themeItem = container.children().last();
                    queuedAction(themeItem);
                }
            }
        });
    }
}

jQuery.fn.exists = function() {
    return this.size() > 0;
}

var barwidths = {};

var pageAlreadyTracked = false;

var trackers = [];



/* Document ready, is fired when the document is loaded, but before it is visible in the browser */
$(document).ready(function() {
    // Call all setups
    setupHomePage();
    setupGA();
    setupHeader();
    setupBars(function() {
        //continue with functionality after bar initialization
        openHomepageThemepageOrThemeItem();

        if (!pageAlreadyTracked) {
            trackPageView(); //default url
        }
    });
    setupShortbarHeight();
    // setRightMarginOpacity(); not anymore
    setupMedischeAZ();
    setupTrimbosPage();
    setupBasepageHeight();

    /* Bind all buttons that do not do a postback. Also bind hovers */
    bindIndexLinks();
    bindFontSizeButtons();
    bindTrimbosMenu();
    bindFactsheetGroupMenu();
    bindSoftlinks()
    bindFactsheetEvents();
    bindThemeItemHover();
    bindHoverMenu();

    /* Call legacy functions */
    callLegacyFunctions();
});

$(window).load(setupBasepageHeight); //set basepage height again after image loading, to be sure.

/* Functions for event binding */
function bindFactsheetEvents() {
    $('#printbutton').click(openWindowAndPrint);
    $('#tellafriendbutton').click(openTellAFriendWindow);
}

function bindFontSizeButtons() {
    $('#fontsizelarger').click(loadLargerFontClick);
    $('#fontsizesmaller').click(loadSmallerFontClick);
}

function bindIndexLinks() {
    // Hash is used to maintain state, so scroll window in a different way
    $('a.indexlink').click(function(event) {
        var href = $(this).attr('href')
        if (href.indexOf('#') == 0) {
            var h2 = document.getElementById(href.substr(1));
            if (h2) {
                var pos = ObjectPosition(h2);
                window.scroll(pos[0], pos[1]);
                event.preventDefault();
            }
        }
    });
}

function bindSoftlinks() {
    $("a.softlink").click(function(event) {
        var reference = getReferenceOfHref($(this).attr("href"));
        window.location = "#" + reference;
        openReference(reference);
        event.preventDefault();
    });
}

function bindTrimbosMenu() {
    $('.trimbospage .trimbosmenu a').click(function(event) {
        var href = $(this).attr('href');
        openTrimbosMenuItem(href);
        event.preventDefault();
    });
}

function bindFactsheetGroupMenu() {
    $('.factsheetgroupmenu a').click(factsheetGroupMenuItemClicked);
    setupFactsheetGroupMemberPage();
}

function bindThemeItemHover() {
    var isPreviewing = false;
    $('.menu a:not(.softlink):not(.selected)').hover(function() {
        $(this).addClass('hovered');
    }, function() {
        $(this).removeClass('hovered');
    });

    $('.menu  a.softlink').each(function() {
        var menuItem = $(this);
        var matchingThemeItem;

        function themeItemIn() {
            isPreviewing = true;
        }
        function themeItemOut() {
            isPreviewing = false;
            setTimeout(resetPreviewedThemeItem, settings.hidepreviewthemeitemdelay);
        }

        function themeItemMenuIn() {
            // If theme item isn't already selected, preview it.
            if (!$(this).is('.selected')) {
                isPreviewing = true;
                var hoverAndPreview = function() {
                    if (isPreviewing) {
                        resetAllPreviewedThemeItems();
                        menuItem.addClass('hovered');
                        isPreviewing = true;
                        previewThemeItem(matchingThemeItem);
                    }
                }

                // If the matching themeitem is already loaded in DOM hover and preview
                if (matchingThemeItem) {
                    hoverAndPreview();
                } else {
                    // Otherwise first load into DOM
                    loadThemeItem(menuItem.attr('href'), function(target) {
                        // Bind hover on children
                        target.children().hover(themeItemIn, themeItemOut);
                        matchingThemeItem = target;
                        hoverAndPreview();
                    });
                }
            }
        }

        function themeItemMenuOut() {
            isPreviewing = false;
            if (!$(this).is('.selected')) {
                // Reset the previewed themeitem, but wait first (with a timeout)
                setTimeout(resetPreviewedThemeItem, settings.hidepreviewthemeitemdelay);
            }
        }
        function resetPreviewedThemeItem() {
            if (!isPreviewing) {
                menuItem.removeClass('hovered');
                var selectedItem = menuItem.parents('ul').find('.selected');
                if (selectedItem.exists()) {
                    previewThemeItem(getThemeItemFromHref(selectedItem.attr('href')));
                } else if (matchingThemeItem) {
                    matchingThemeItem.hide();
                }
            }
        }
        function resetAllPreviewedThemeItems() {
            menuItem.parents('ul').find('a.softlink').each(function() {
                $(this).removeClass('hovered');
                matchingThemeItem.hide();
            });
        }
        // Bind hover on menu
        menuItem.hover(themeItemMenuIn, themeItemMenuOut);
    });
}

function bindHoverMenu() {
    $('.theme').each(function() {
        // Longest bar is the opened theme, do not show hovermenu
        if (!$(this).is('.longestbar')) {
            var shouldHoverMenuBeShown = false;
            var themeBar = $(this).children('a.themeselect');
            var currentHoverMenu = $(this).children('.hovermenu');
            var themeBarEntered = false;

            function themeBarIn() {
                shouldHoverMenuBeShown = true;
                if (!currentHoverMenu.is(':visible')) {
                    resetHoverMenu();

                    // See if this theme is already opened
                    var openedTheme = getOpenedTheme();
                    var parentTheme = $(this).parents('.theme');
                    if (!openedTheme.exists() || !parentTheme.exists() || !(parentTheme[0] == openedTheme[0])) {
                        // See if the hovermenu needs to be shown at the top or at the bottom
                        var menutop = themeBar.offset().top + themeBar.height() - $(window).scrollTop();
                        if (menutop + currentHoverMenu.height() > $(window).height()) {
                            currentHoverMenu.css('bottom', themeBar.height());
                        } else {
                            // Reset
                            currentHoverMenu.css('bottom', '');
                        }
                        showHoverMenu(currentHoverMenu);
                    }
                }
            }

            function themeBarOut() {
                shouldHoverMenuBeShown = false;

                // See if the hover menu should disappear, but wait first (with a timeout)
                setTimeout(function() {
                    if (currentHoverMenu.is(':visible') && !shouldHoverMenuBeShown) {
                        resetHoverMenu(currentHoverMenu);
                    }
                }, settings.hidehovermenudelay);
            }

            function hoverMenuIn() {
                shouldHoverMenuBeShown = true;
            }
            function hoverMenuOut() {
                shouldHoverMenuBeShown = false;
                resetHoverMenu(this);
            }

            // Bind to hovers over themebar and the hovermenu's
            currentHoverMenu.hover(hoverMenuIn, hoverMenuOut);
            $(themeBar).hover(themeBarIn, themeBarOut);
        }
    });
}
function resetHoverMenu(hoverMenu) {
    if (hoverMenu == undefined) {
        $('.hovermenu').hide(settings.hidehovermenuspeed);
    } else {
        $(hoverMenu).hide(settings.hidehovermenuspeed);
    }
}
function showHoverMenu(hoverMenu) {
    hoverMenu.show(settings.showhovermenuspeed);
}

/* Setup functions */
function setupBarWidths() {
    var minrandwidth = settings.barmaxwidth;
    var maxrandwidth = settings.barminwidth;
    $(".theme").not(":last-child").each(function() {
        var randwidth = Math.randInt(settings.barminwidth, settings.barmaxwidth);
        barwidths[this.className] = randwidth;
        if (randwidth < minrandwidth) { minrandwidth = randwidth; }
        if (randwidth > maxrandwidth) { maxrandwidth = randwidth; }
    });
    //rescale random values
    for (var bar in barwidths) {
        barwidths[bar] = Math.floor(
            (settings.barmaxwidth - settings.barminwidth) * (barwidths[bar] - minrandwidth) / (maxrandwidth - minrandwidth)
            ) + settings.barminwidth;
    }
    //last bar is always the same length
    $(".theme:last").each(function() {
        barwidths[this.className] = settings.barmediumwidth;
    });
}

function setupHomePage() {
    if (!$(".maincontent .homepage").exists()) {
        $(".footer").show();
    }
    $(".theme .bar").each(function() {
        $(this).children(".themeintro").css("color",
            opacityColor("#FFFFFF", $(this).css("background-color"), 0.8));
    });
}
function setupGA() {
    // medicinfo tracker code
    trackers[0] = _gat._getTracker("UA-3583146-2");
    // vgz tracker code
    trackers[1] = _gat._getTracker("UA-22552988-8");

}

function setupHeader() {
    var searchbox = $('.header .searchandresize input.searchinput');
    if (searchText !== undefined && searchbox.exists()) {
        searchbox.focus(function() {
            if ($(this).attr('value') == searchText) {
                $(this).attr('value', '');
                $(this).css('color', '#333333');
            }
        });
        if (searchbox.attr('value') != searchText) {
            searchbox.css('color', '#333333');
        }
    }
}

function setupTrimbosPage() {
    if ($('.trimbospage').exists()) {
        // If page is trimbos, the achor can have the trimbos page to open
        if (window.location.hash) {
            var pageid = window.location.hash.substr(1);
            openTrimbosMenuItem('?page=' + pageid);
        }
    }
}
function setupFactsheetGroupMemberPage() {
    var pageId = getPageId(document.location.hash);
    if (pageId) {
        openFactsheetGroupMember(pageId);
    } else {
        setupFactsheetGroupMemberHeight()
    }
}

function setupFactsheetGroupMemberHeight() {
    var content = $('.factsheetgroupmember .nomargincontent');
    var menu = $('.factsheetgroupmenu');

    if (content.exists() && menu.exists()) {
        // Reset height
        content.css('height', '');
        menu.css('height', '');

        if (menu.height() < content.height()) {
            menu.height(content.height());
        } else {
            content.height(menu.height());
        }
    }
}

function setupMedischeAZ() {
    $('#medischeaz .medischcontent .group').each(function() {
        var newWidth = $(this).width() + 10;
        var parent = $(this).parent();
        $(this).width(newWidth);
    });
}

function setupShortbarHeight() {
    var maincontent = $('.maincontent');
    var shortbars = maincontent.find('.shortbars');
    var menu = maincontent.find('.leftmargin .menu');
    var longbars = maincontent.find('.longbars');

    if (shortbars.exists() && menu.exists()) {
        var top = menu.height();
        if (longbars.exists()) {
            top += longbars.height() + 1;
        }
        top += Number(maincontent.css('padding-top').replace('px', ''));
        shortbars.css('top', top + 'px');
    }
}

function setupBars(callback) {
    setupBarWidths();

    if (isWelcomeAnimationEnabled()) {
        $(".theme").each(function() {
            $(this).find(".bar").animate({ width: barwidths[this.className] }, settings.barinitialspeed, function() {
                if ($(this).parents(".theme").is(":last-child")) {
                    if (isFunction(callback)) {
                        callback();
                    }
                }
            });
        });
        setCookie("EnableWelcomeAnimation", "false");
    } else {
        $(".theme").each(function() {
            var bar = $(this).find(".bar");
            if (bar.width() == 0) {
                bar.width(barwidths[this.className]);
            }
        });
        if (isFunction(callback)) {
            callback();
        }
    }
}

function setupBasepageHeight() {
    var basepage = $('.basepage');
    var content = $('.basepage .content');
    if (!content.exists()) {
        content = $('.trimbospage .content .nomargincontent');
        basepage = $('.trimbospage');
    }
    if (!content.exists()) {
        content = $('.basepagenorightmargin .content');
        basepage = $('.basepagenorightmargin');
    }
    if (content.exists() && basepage.exists()) {
        var shortbars = $('.shortbars');
        var shortbarsHeight = 0;
        /*in ie7, the shortbarsdiv has default 15px height (also when no children)*/
        if (shortbars.children().exists()) {
            shortbarsHeight = shortbars.height();
        }
        var footerHeight = basepage.siblings('.footerline').height();
        var paddingTop = parseInt(content.css('padding-top').replace('px', ''));
        var menuHeight = $('.leftmargin .menu').height();
        var minHeight = menuHeight - paddingTop + footerHeight + shortbarsHeight;

        var rightmargin = $(".rightmargin");
        if (rightmargin.exists()) {
            // reset height so the height of internal elements is taken
            rightmargin.css('height', '');
            var rightmarginHeight = rightmargin.height() - paddingTop + footerHeight;
            if (rightmarginHeight > minHeight) {
                minHeight = rightmarginHeight;
            }
        }
        // content height must be at least same as rightmargin
        if (content.height() < minHeight) {
            content.height(minHeight);
        }
        if (rightmargin.exists()) {
            if (rightmarginHeight < basepage.height()) {
                rightmargin.height(basepage.height());
            }
        }
    }
}

/* Themepage & ThemeItem & ThemeTegels*/
function isWelcomeAnimationEnabled() {
    return $(".maincontent .homepage").exists() &&
        !(getCookie("EnableWelcomeAnimation") == "false" ||
        document.referrer.match(document.location.host));
}

function openHomepageThemepageOrThemeItem() {
    var expanded = false;
    var anchor = document.location.hash.substring(1);
    if (anchor != settings.homepageref) {
        expanded = openReference(anchor, showFooter);

        //if no valid anchor was provided, check for server side expand indications
        var expandHint = $(".expandonload");
        if (!expanded && expandHint.exists()) {
            expanded = openReference(expandHint.attr("id").replace("id_", ""), showFooter);
        }
    }

    if (!expanded && $(".maincontent .homepage").exists()) {
        //else expand homepage info
        setHomepageInfoVisibility(true, showFooter);
        trackPageView("/");
    }
}

function showFooter() {
    $(".footer").slideDown(settings.themeslideupspeed);
}

function openReference(reference, queuedAction) {
    var target = getThemeItemFromHref(reference);

    if (target.exists()) {
        if (target.hasClass("themepage")) {
            var theme = target.parents(".theme");
            if (isThemeOpened(theme)) {
                collapseTheme(theme, function() {
                    showHoverMenu(theme.children('.hovermenu'));
                    showThemeBarIntro();
                    if (isFunction(queuedAction)) {
                        queuedAction();
                    }
                });
                pretendNavigateToHome();
            } else {
                selectTheme(theme, function() {
                    openFirstThemeItem(theme)
                    if (isFunction(queuedAction)) {
                        queuedAction();
                    }
                });
                trackPageView(theme.find("a.themeselect").attr("href"));
                return true;
            }
        }
        else if (target.hasClass("themeitem") || target.hasClass("themetegels")) {
            selectThemeItem(target, queuedAction);
            return true;
        }
    }
    else {
        var menuLink = getThemeItemLink(reference);
        if (menuLink.exists()) {
            // Themeitem exists, but not yet loaded in DOM
            var currentTheme = menuLink.parents('.theme');
            var selectItem = function(selectedThemeItem) {
                selectThemeItem(selectedThemeItem, queuedAction);
            }
            loadThemeItem(reference, selectItem, currentTheme);
            return true;
        }
    }
    return false;
}

function getThemeItemLink(href) {
    var url = "/" + getPageId(href);
    return $('.menu').find('a[href="' + url + '"]')
}

function selectTheme(theme, queuedAction) {
    var hoverMenu = theme.children('.hovermenu');
    resetHoverMenu(hoverMenu);

    var displayTheme = function() {
        expandTheme(theme, function() {
            if (isFunction(queuedAction)) {
                queuedAction();
            }
            resetHoverMenu(hoverMenu);
        });
    }

    var openedTheme = getOpenedTheme();
    if (openedTheme.exists()) {
        collapseTheme(openedTheme, displayTheme);
    } else {
        displayTheme();
    }

    var themepagelink = theme.find("a.themeselect").attr("href");
    changeTitle(theme.find(".themelabel").text());
    setQuoteText(themepagelink);
}

function selectThemeItem(themeitem, queuedAction) {
    var themeitem = $(themeitem);
    var parentTheme = themeitem.parents(".theme");

    var displayThemeItem = function() {
        showThemeItem(themeitem);
        if (isFunction(queuedAction)) {
            queuedAction();
        }
    }
    var displayTheme = function() {
        expandTheme(parentTheme, displayThemeItem);
    }

    if (!parentTheme.find(".themepage").is(":visible")) {
        var openedTheme = getOpenedTheme();
        if (openedTheme.exists()) {
            collapseTheme(openedTheme, displayTheme);
        } else {
            displayTheme();
        };
    } else {
        displayThemeItem();
    }

    var selectedItem = getThemeItemSelect(themeitem);
    changeTitle(selectedItem.text());
    trackPageView(selectedItem.attr("href"));
}


function pretendNavigateToHome() {
    setHomepageInfoVisibility(true);
    setIntroductionText();
    window.location = "#" + settings.homepageref;
    trackPageView("/");
    changeTitle("Home");
}

function expandTheme(theme, queuedAction) {
    theme = $(theme);

    theme.find(".bar").animate({ width: settings.openbarwidth }, settings.barnormalspeed, function() {
        theme.find(".themepage").slideDown(settings.themeslidedownspeed, queuedAction);
        setHomepageInfoVisibility(false);
        hideThemeBarIntro();
    });
}

function collapseTheme(theme, queuedAction) {
    theme = $(theme);

    theme.find(".themepage").slideUp(settings.themeslideupspeed, function() {
        theme.find(".bar").animate({ width: barwidths[theme.attr("class")] }, settings.barnormalspeed);
        if (isFunction(queuedAction)) {
            queuedAction();
        }
    });
}

function hideThemeBarIntro() {
    $(".bar .themeintro").fadeOut("normal", function() { $(this).css("display", "none"); });
}

function showThemeBarIntro() {
    $(".bar .themeintro").fadeTo("normal", 0.8, function() { $(this).css("display", "block"); });
}

function setHomepageInfoVisibility(visible, queuedAction) {
    var speed = settings.themeslideupspeed;
    if (visible) {
        $(".theme:last").css("margin-bottom", "1px");
        if (isFunction(queuedAction)) {
            $(".homepage").slideDown(speed, queuedAction);
        } else {
            $(".homepage").slideDown(speed);
        }
    } else {
        if (isFunction(queuedAction)) {
            $(".homepage").slideUp(speed, queuedAction);
        } else {
            $(".homepage").slideUp(speed);
        }
        $(".theme:last").css("margin-bottom", "0px");
    }
}


function getReferenceOfHref(href) {
    return href.replace(/[\/{}#]/g, ""); //strip / { } # from the reference
}


function getCookie(name) {
    var search = name + "="
    var value = "";
    if (document.cookie.length > 0) {
        var offset = document.cookie.indexOf(search)
        // if cookie exists
        if (offset != -1) {
            offset += search.length
            // set index of beginning of value
            var end = document.cookie.indexOf(";", offset);
            // set index of end of cookie value
            if (end == -1) end = document.cookie.length;
            value = unescape(document.cookie.substring(offset, end))
        }
    }
    return value;
}

function setCookie(name, value) {
    document.cookie = name + "=" + value;
}

function decimalToHex(decimal) {
    var hex = decimal.toString(16).substr(0, 2);
    if (hex.length == 1) hex = '0' + hex;
    return hex;
}
function hexToDecimal(hex) { return parseInt(hex, 16); }

function opacityColor(color, backcolor, opacity) {
    var rgbColor = new RGBColor(color);
    var rgbBackcolor = new RGBColor(backcolor);
    if (rgbColor && rgbBackcolor) {
        var newR = opacity * rgbColor.r + (1 - opacity) * rgbBackcolor.r;
        var newG = opacity * rgbColor.g + (1 - opacity) * rgbBackcolor.g;
        var newB = opacity * rgbColor.b + (1 - opacity) * rgbBackcolor.b;
        return '#' + (decimalToHex(newR) + decimalToHex(newG) + decimalToHex(newB)).toUpperCase();
    } else {
        return '#000000';
    }
}

function trackPageView(url) {
    //alert(url);
    try {
        if (url) {
            // Strip '#'
            if (url.substr(0, 1) == '#') {
                url = url.substr(1);
            }
            // Add '/'
            var first = url.substr(0, 1);
            if (first != '/' && first != '?') {
                url = '/' + url;
            }
            if (first == '?') {
                url = window.location.pathname + url;
            }
            $.each(trackers, function(i, tracker) {
                tracker._trackPageview(url);
            });
        }
        else {
            $.each(trackers, function(i, tracker) {
                tracker._trackPageview(url);
            });
        }
    } catch (err) { }
    pageAlreadyTracked = true;
}


function openTrimbosMenuItem(href) {
    // href must be like '?page=0482f976-13b8-476d-ac63-5ac7b78ffe6e'
    // Use an ajax call to accelerate the page.
    var content = $('.trimbospage .content');
    var li = $('.trimbosmenu a[href="' + href + '"]').parent();
    //var li = $(this).parent();
    var siblings = li.siblings('.selected');
    var pageidStart = href.indexOf('page=') + 5;
    var pageidEnd = href.substr(pageidStart).indexOf('&');
    var pageid = href.substr(pageidStart);
    if (pageidEnd != -1) {
        pageid = href.substr(pageidStart, pageidEnd);
    }

    // Track pageview
    trackPageView(href);

    // Set location (for tracking history)
    window.location = '#' + pageid;

    // using jQuery load with a query selector (after space). On success, reset the basepage height.
    content.load(href + '&partial=trimboscontent&selection=content .content .nomargincontent',
        setupBasepageHeight
    );

    // Shift the menu in right margin
    siblings.removeClass('selected').addClass('unselected').
            find('.selected').removeClass('selected').addClass('unselected');
    siblings.children('.submenu').hide();
    li.addClass('selected');
    li.removeClass('unselected');
    li.find('.selected').removeClass('selected').addClass('unselected');

    // collapse, expand...
    if (li.children('a').is('.node')) {
        var submenu = li.children('.submenu');
        submenu.show();
    }
    setupBasepageHeight();
}

/* FactsheetGroup */
function factsheetGroupMenuItemClicked(event) {
    var href = getPageId($(this).attr('href'));
    var queryStringIndex = href.indexOf('?');
    if (queryStringIndex > 0) {
        href = href.substr(0, queryStringIndex);
    }
    openFactsheetGroupMember(href);
    event.preventDefault();
}

function getPageId(hash) {
    var index = hash.indexOf('/');
    if (index != -1) {
        hash = hash.substr(index + 1);
    }
    index = hash.indexOf('#');
    if (index != -1) {
        hash = hash.substr(index + 1);
    }
    var queryStringIndex = hash.indexOf('?');
    if (queryStringIndex > 0) {
        hash = hash.substr(0, queryStringIndex);
    }
    if (hash.length == 36) {
        hash = '{' + hash + '}';
    }
    return hash;
}


function openFactsheetGroupMember(pageId) {
    var subject = '';

    $('.factsheetgroupmenu a').each(function() {
        var href = $(this).attr('href');
        var index = href.indexOf('?');
        if (index > 0) {
            href = href.substr(0, index);
        }
        if (href.indexOf(pageId) >= 0) {
            subject = $(this);
        }
    });

    if (subject != '') {
        // Set class selected
        subject.parent().siblings('li').removeClass('selected');
        subject.parent().addClass('selected');

        /*Same idea as trimbos page*/
        window.location.hash = '#' + pageId;
        var content = $('.maincontent .content .nomargincontent');
        // Load with partial on query string to enforce a partial page
        content.load(pageId + '?partial=contentlink',
        function() {
            setupFactsheetGroupMemberHeight();
            bindFactsheetEvents();
            bindIndexLinks();
        });
        changeTitle(subject.text());
        trackPageView(pageId);
    }
}

function openTellAFriendWindow() {
    var url = $(this).children('.refid').text();
    if (url) {
        window.open('/externe%20modules/c84_tellafriend?url=' + url, 'popup', 'width=420, height=275, location=no, menubar=no, status=no');
    }
}

function printit(printview) {
    if (printview.print) {
        printview.focus();
        if (navigator.appName == 'Netscape' && navigator.userAgent.indexOf('Firefox') != -1) {
            printview.onload = printview.print;
        } else {
            printview.print();
        }
    } else {
        var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
        document.body.insertAdjacentHTML('beforeEnd', WebBrowser);
        WebBrowser1.ExecWB(6, 2); //Use a 1 vs. a 2 for a prompting dialog box    WebBrowser1.outerHTML = "";  
    }
}

function openWindowAndPrint() {
    var browserWidth = screen.availWidth - 20;
    var printUrl = window.location.pathname;
    if (window.location.hash) {
        printUrl = getPageId(window.location.hash);
    }
    printUrl = printUrl + ((printUrl.indexOf("?") != -1) ? "&" : "?") + "popup=true";

    if (browserWidth < 780) {
        var left = (screen.availWidth - 550) / 2;
        var top = (screen.availHeight - 350) / 2;
        var printwindow = window.open(printUrl, "newwindow", "left=" + left + ", top=" + top + ", width=550, height=350, location=no, menubar=yes, status=no, toolbar=no, scrollbars=yes, resizable=yes");
    }
    else {
        var left = (screen.availWidth - 550) / 2;
        var top = (screen.availHeight - 600) / 2;
        var printwindow = window.open(printUrl, "newwindow", "left=" + left + ", top=" + top + ", width=550, height=600, location=no, menubar=yes, status=no, toolbar=no, scrollbars=yes, resizable=yes");
    }
    printit(printwindow);
}

function setIntroductionText() {
    $.ajax({
        url: '/' + settings.homepageref,
        data: "partial=introduction",
        success: setTopText
    });
}

function setQuoteText(themePageID) {
    if (themePageID.charAt(0) != '/') {
        themePageID = '/' + themePageID;
    }
    $.ajax({
        url: themePageID,
        data: "partial=quote",
        success: setTopText
    });
}

function setTopText(topText) {
    $('.header .headermain .bottom').html(topText);
}

/* Theme item */
function showThemeItem(themeItem) {
    // Set menuitem selected
    var menuItemATag = getThemeItemSelect(themeItem)
    // Set selected in menu, deselect others
    menuItemATag.parents('li').siblings().find('a').removeClass('selected').removeClass('hovered');
    menuItemATag.removeClass('hovered');
    menuItemATag.addClass('selected');
    previewThemeItem(themeItem);
}

function previewThemeItem(themeItem) {
    /*Like showThemeItem but without changing seleted theme item*/
    themeItem.siblings().hide();
    themeItem.show();
    var middleListbox = $(themeItem.children()[1]);
    var rightListbox = $(themeItem.children()[2]);
    resizeListbox(middleListbox);
    resizeListbox(rightListbox);
}

function getThemeItemSelect(themeItem) {
    var hrefOfMenuItem = $(themeItem).attr('id').replace('id_', '');
    var menu = $(themeItem).parents('.themepage').find('.menu');
    var selectedItem = menu.find("a[href='/" + hrefOfMenuItem + "']");
    if (!selectedItem.exists()) {
        selectedItem = menu.find("a[href='/{" + hrefOfMenuItem + "}']");
    }
    return selectedItem;
}

function resizeListbox(listbox) {
    if (listbox) {
        if (listbox.height() >= 280) {
            // Set height to 305px. Div already has 17px height padding.
            listbox.height(288);
            listbox.css('background-image', 'none');
        }
    }
}


/*Font sizes*/
function loadLargerFontClick(event) {
    var oldFontSize = getCookie('fontsize');
    if (oldFontSize == 'normal') {
        toggleFontSizes('large');
    } else if (oldFontSize == 'large') {
        toggleFontSizes('extralarge');
    }
    event.preventDefault();
}

function loadSmallerFontClick(event) {
    var oldFontSize = getCookie('fontsize');
    if (oldFontSize == 'extralarge') {
        toggleFontSizes('large');
    } else if (oldFontSize == 'large') {
        toggleFontSizes('normal');
    }
    event.preventDefault();
}

function toggleFontSizes(newFontSize) {
    var fontLargerButton = $('#fontsizelarger');
    var fontSmallerButton = $('#fontsizesmaller');

    // new font size in cookie
    setCookie('fontsize', newFontSize);

    // Switch buttons
    var cssFile;
    switch (newFontSize) {
        case 'large':
            cssFile = '/css/largefonts.css';
            fontLargerButton.removeClass('disabled').addClass('enabled').attr('href', '?fontsize=extralarge')
                .children('img').attr('src', 'EG-font-larger-enabled');
            fontSmallerButton.removeClass('disabled').addClass('enabled').attr('href', '?fontsize=normal')
                .children('img').attr('src', 'EG-font-smaller-enabled');
            break;
        case 'extralarge':
            cssFile = '/css/extralargefonts.css';
            fontLargerButton.removeClass('enabled').addClass('disabled').removeAttr('href')
                .children('img').attr('src', 'EG-font-larger-disabled');
            fontSmallerButton.removeClass('disabled').addClass('enabled').attr('href', '?fontsize=large')
                .children('img').attr('src', 'EG-font-smaller-enabled');
            break;
        default:
            cssFile = '/css/normalfonts.css';
            fontLargerButton.removeClass('disabled').addClass('enabled').attr('href', '?fontsize=large')
                .children('img').attr('src', 'EG-font-larger-enabled');
            fontSmallerButton.removeClass('enabled').addClass('disabled').removeAttr('href')
                .children('img').attr('src', 'EG-font-smaller-disabled');
            break;
    }

    // Set the new css file
    var fontSizeCss = $('.fontsizecss');
    if (fontSizeCss.exists()) {
        fontSizeCss.attr('href', cssFile);
    }
}


