
(function ($) {
    $(document).ready(function () {
        /***********************************
         **** Global variables
         ***********************************/
        var win = $(window);
        var page = $('#page');


        /***********************************
         **** Detect device
         ***********************************/
        try {
            document.createEvent('TouchEvent');
            page.addClass('touch');
        } catch (e) {
        }
        (function () {
            var toggleSmartphoneClass = function () {
                page.toggleClass('smartphone', win.width() <= 600);
            };
            toggleSmartphoneClass.call();
            win.on('resize', toggleSmartphoneClass);
        })();

        /***********************************
         **** Load swipebox on image links
         ***********************************/
        $("a.swipebox").swipebox({
            hideBarsDelay: 0
        });

        /***********************
         ** Switch menu to fixed
         **********************/
        (function () {
            var scrollTimeout = null;
            var header = $('#header');
            var headerNavigation = $('#header-navigation');
            if (headerNavigation.length > 0) {
                win.on('scroll touchmove', function (e) {
                    clearTimeout(scrollTimeout);
                    scrollTimeout = setTimeout(function () {
                        header.toggleClass('fixed', win.scrollTop() > headerNavigation.offset().top);
                    }, 10);
                });
                header.toggleClass('fixed', win.scrollTop() > headerNavigation.offset().top);
            }
        })();

        /***********************************
         ****  Update linked label with background class for radio and checkbox
         ***********************************/
        var updateBackgroundColorForChoice = function () {
            $('label[for="' + this.id + '"]').toggleClass('checked', this.checked);
        };
        $(document).on('change', 'input[type="radio"],input[type="checkbox"]', function () {
            $('input[name="' + this.name + '"]').each(function () {
                updateBackgroundColorForChoice.apply(this);
            });
        });
        $('input[type="radio"],input[type="checkbox"]').each(function () {
            updateBackgroundColorForChoice.apply(this);
        });

        /***********************************
         **** Dynamic scroller
         ***********************************/
        $('.dynamic-scroller').each(function () {
            var handler = $(this);
            var lastLink = handler.children('.dynamic-scroller-link:last');
            var load = function () {
                if (lastLink && lastLink.length > 0) {
                    if (lastLink.offset().top < (win.scrollTop() + win.height())) {
                        win.off('scroll', load);
                        $.ajax({
                            url: lastLink.attr('href'),
                            beforeSend: function () {
                                lastLink.addClass('loading');
                            },
                            complete: function () {
                                lastLink.removeClass('loading');
                            },
                            success: function (result) {
                                handler.find('.dynamic-scroller-clearfix').remove();
                                handler.append(result);
                                var newLastLink = handler.children('.dynamic-scroller-link:last');
                                if (newLastLink.attr('href') != lastLink.attr('href')) {
                                    lastLink.remove();
                                    lastLink = newLastLink;
                                    win.on('scroll', load);
                                }
                            }
                        });
                    }
                }
            };
            win.on('scroll', load);
            load.call();
        });

        /***********************************
         **** Dialogs
         ***********************************/
        (function () {
            $(document).on('click', '.dialog > a.toggler', function (event) {
                event.preventDefault();
                event.stopPropagation();
                var dialogHandler = $(this).parent();
                var dialogToggle = dialogHandler.children('.toggler');
                var dialogContent = dialogHandler.children('.content');
                var width = parseInt(dialogContent.data('width'), 10);
                var height = parseInt(dialogContent.data('height'), 10);
                if (dialogContent.data('uri')) {
                    var content = $('<div><iframe src="' + dialogContent.data('uri') + '" width="100%" height="100%" scrolling="no" seamless="seamless" style="overflow: hidden;"/></div>');
                } else {
                    var content = $('<div>' + dialogContent.html() + '</div>');
                }
                if (width > win.width()) {
                    width = win.width();
                }
                if (height > win.height()) {
                    height = win.height();
                }
                content.dialog({
                    autoResize: true,
                    height: height || 'auto',
                    modal: true,
                    resize: 'auto',
                    resizable: false,
                    title: dialogContent.data('title') || '',
                    width: width || 'auto'
                });
                if (dialogContent.data('uri')) {
                    content.children('iframe').on('load', function () {
                        content.dialog('option', 'height', this.contentWindow.document.body.scrollHeight + 60);
                    });
                }
            });
        })();

        /***********************************
         **** Search form
         ***********************************/
        $('#header-search .fa').on('click', function () {
            $(this).parent().submit();
        });

        /***********************************
         **** Handle menu on smartphone and touch surface
         ***********************************/
        (function () {
            var toggle = $('#header-menu-toggle .fa');
            var menu = $('#header-menu');
            var subMenus = $('#header-menu > ul > li');
            toggle.on('click touchstart', function (event) {
                event.preventDefault();
                event.stopPropagation();
                if (menu.hasClass('toggled')) {
                    menu.removeClass('toggled');
                } else {
                    menu.addClass('toggled');
                }
                subMenus.removeClass('toggled');
            });

            $(document).on('click', '#page.touch #header-menu > ul > li > a,#page.smartphone #header-menu > ul > li > a', function (event) {
                var parent = $(this).parent();
                if (!parent.hasClass('toggled') && parent.children('ul').length > 0) {
                    event.preventDefault();
                    event.stopPropagation();
                    subMenus.removeClass('toggled');
                    parent.addClass('toggled');
                }
            });
        })();

        /***********************************
         **** Load dynamic content for smartphone
         ***********************************/
        (function () {
            $(document).on('click', '#page.smartphone .news-list .news .read-toggle', function (event) {
                event.preventDefault();
                event.stopPropagation();
                var link = $(this).parents('.news');
                if (link.hasClass('toggled')) {
                    link.removeClass('toggled');
                    win.scrollTop(link.offset().top);
                } else if (link.data('detail')) {
                    var detail = link.find('.news-item-detail');
                    if (detail.length === 0) {
                        var loader = link.find('.loader');
                        $.ajax({
                            url: link.data('detail'),
                            beforeSend: function () {
                                loader.show();
                            },
                            success: function (html) {
                                loader.after(html);
                                link.addClass('toggled');
                            },
                            complete: function () {
                                loader.hide();
                            }
                        });
                    } else {
                        link.addClass('toggled');
                    }
                }
            });
            $(document).on('click', '#page.smartphone .news-list .news', function (event) {
                event.preventDefault();
                event.stopPropagation();
            });


            $(document).on('click', '#page.smartphone .magazine-list a.magazine', function (event) {
                event.preventDefault();
                event.stopPropagation();
                var link = $(this);
                if (!link.hasClass('toggled') && link.data('detail')) {
                    var detail = link.find('.magazine-item-detail');
                    if (detail.length === 0) {
                        var loader = link.find('.loader');
                        $.ajax({
                            url: link.data('detail'),
                            beforeSend: function () {
                                loader.show();
                            },
                            success: function (html) {
                                loader.after(html);
                                link.addClass('toggled');
                                win.scrollTop(link.offset().top + 20);
                            },
                            complete: function () {
                                loader.hide();
                            }
                        });
                    } else {
                        link.addClass('toggled');
                        win.scrollTop(link.offset().top + 20);
                    }
                }
            });

            $(document).on('click', '#page.smartphone .magazine-list a.magazine .read-less', function (event) {
                event.preventDefault();
                event.stopPropagation();
                var link = $(this).parents('a.magazine');
                link.removeClass('toggled');
                win.scrollTop(link.offset().top + 20);
            });
            $(document).on('click', '#page.smartphone .magazine-list a.magazine a', function (event) {
                if (!$(this).hasClass('toggler')) {
                    event.preventDefault();
                    event.stopPropagation();
                }
            });
        })();
    });
})(jQuery);

			// decrypt helper function
		function decryptCharcode(n,start,end,offset) {
			n = n + offset;
			if (offset > 0 && n > end) {
				n = start + (n - end - 1);
			} else if (offset < 0 && n < start) {
				n = end - (start - n - 1);
			}
			return String.fromCharCode(n);
		}
			// decrypt string
		function decryptString(enc,offset) {
			var dec = "";
			var len = enc.length;
			for(var i=0; i < len; i++) {
				var n = enc.charCodeAt(i);
				if (n >= 0x2B && n <= 0x3A) {
					dec += decryptCharcode(n,0x2B,0x3A,offset);	// 0-9 . , - + / :
				} else if (n >= 0x40 && n <= 0x5A) {
					dec += decryptCharcode(n,0x40,0x5A,offset);	// A-Z @
				} else if (n >= 0x61 && n <= 0x7A) {
					dec += decryptCharcode(n,0x61,0x7A,offset);	// a-z
				} else {
					dec += enc.charAt(i);
				}
			}
			return dec;
		}
			// decrypt spam-protected emails
		function linkTo_UnCryptMailto(s) {
			location.href = decryptString(s,2);
		}
		
      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-11637023-1']);_gaq.push(['_setDomainName', 'pro-fribourg.ch']);      _gaq.push(['_trackPageview']);

      setTimeout(function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      }, 100);
