function init_formfields_richtext() {
    $('form.form .formfield-richtext textarea').tinymce({
        script_url: '//cdn.artification.com/libs/tinymce/current/tinymce.min.js',
        theme: 'modern',
        language: {'ger': 'de', 'eng': 'en', 'fra': 'fr', 'ita': 'it'}[lang],
        resize: 'both',
        tabfocus_elements: ':prev,:next',
        add_unload_trigger: true,
        entity_encoding: 'raw',
        
        plugins: [
            "autolink lists link charmap preview hr searchreplace wordcount visualblocks visualchars code fullscreen insertdatetime media nonbreaking table contextmenu directionality paste"
        ],
        statusbar: true,
        menubar: false,
        toolbar1: 'undo redo | styleselect | bullist numlist table | subscript superscript hr charmap | bold italic underline strikethrough',
        
        fix_list_elements: true,
        visual: true,
        browser_spellcheck: true,
        convert_urls: false,
        relative_urls: false,
        object_resizing: false,
        
        style_formats: [
            {title: 'Headers', items: [
                {title: 'Header 1', format: 'h1'},
                {title: 'Header 2', format: 'h2'},
                {title: 'Header 3', format: 'h3'},
                {title: 'Header 4', format: 'h4'},
                {title: 'Header 5', format: 'h5'},
                {title: 'Header 6', format: 'h6'}
            ]},
            {title: 'Blocks', items: [
                {title: 'Paragraph', format: 'p'},
                {title: 'Blockquote', format: 'blockquote'},
                {title: 'Div', format: 'div'},
                {title: 'Pre', format: 'pre'}
            ]}
        ],
        
        formats: {
            alignleft: {selector: '*', classes: 'left'},
            alignright: {selector: '*', classes: 'right'},
            aligncenter: {selector: '*', classes: 'center'},
            alignjustify: {selector: '*', classes: 'justify'},
            underline: {inline: 'ins'},
            strikethrough: {inline: 'del'}
        }
    });
}

function init_footerpane() {
    var $footerpane = $('#footerpane');
    
    $footerpane.on({
        mouseenter: function() {
            if ($window.width() > 768) {
                var $this = $(this);
                var $footerinside = $this.children('.footerinside');
                if (!$footerinside.data('originalheight')) {
                    $footerinside.data('originalheight', $footerinside.css('height'));
                }
                $footerinside.css('height', ($footerinside[0].scrollHeight) + 'px');
                $this.addClass('active');
            }
        },
        mouseleave: function() {
            if ($window.width() > 768) {
                var $this = $(this);
                var $footerinside = $this.children('.footerinside');
                $footerinside.css('height', $footerinside.data('originalheight'));
                $this.removeClass('active');
            }
        }
    });
}

function load_regiobon_advertiser_locationmap($location) {
    if (!$location.hasClass('map_loaded')) {
        if (typeof(google) == typeof(undefined)) {
            setTimeout(function() {
                load_regiobon_advertiser_locationmap($location);
            }, 100);
        } else {
            try {
                var data = get_data($location, 'map');
                var $address = $('> address', $location);
                var $map_functions = $('.map_functions', $location);
                var options = {
                    zoom: data['zoom'],
                    center: new google.maps.LatLng(data['latitude']+0.04, data['longitude']),
                    mapTypeId: google.maps.MapTypeId[data['MapTypeId']],
                    scrollwheel: false
                }
                var map = new google.maps.Map($('> .map', $location)[0], options);
                var marker = new google.maps.Marker({
                    map: map,
                    position: new google.maps.LatLng(data['latitude'], data['longitude']),
                    title: $.trim($('.fn', $address).text())
                });
                var $markerInfoContent = $('<div class="markerInfo" />');
                $markerInfoContent.append($address.clone()).append($map_functions);
                var markerInfo = new google.maps.InfoWindow({
                    content: $markerInfoContent[0],
                });
                markerInfo.open(map, marker);
                $location.addClass('map_loaded');
            } catch (e) {
                setTimeout(function() {
                    load_regiobon_advertiser_locationmap($location);
                }, 100);
            }
        }
    }
}

function init_regiobon_offers() {
    $body.on('mouseenter', '.ZMSCustom-regiobon_offer-short .wrapper, .ZMSCustom-regiobon_offer-foreign .wrapper, .ZMSCustom-regiobon_organization-short .wrapper', function() {
        $(this).parent().addClass('active');
    }).on('mouseleave', '.ZMSCustom-regiobon_offer-short .wrapper, .ZMSCustom-regiobon_offer-foreign .wrapper, .ZMSCustom-regiobon_organization-short .wrapper', function() {
        $(this).parent().removeClass('active');
    });
    
    var $offer_advertiser_locations = $('.ZMSCustom-regiobon_offer-main .bon-advertiser .location, .ZMSCustom-regiobon_organization-main .location');
    if ($offer_advertiser_locations.length > 0) {
        //$.getScript('//maps.googleapis.com/maps/api/js?sensor=false&v=3&language=' + language_codes[lang]['iso-639-1'] + '&async=2&callback=jQuery.noop');
        
        var libraries = [];
        var api_uri = new URI('//maps.googleapis.com/maps/api/js').addQuery({
            sensor: false,
            language: language_codes[lang]['iso-639-1'],
            async: 2,
            callback: 'jQuery.noop'
        });
        if (google_api_key) {
            api_uri.addQuery({
                key: google_api_key,
            });
        }
        api_uri.addQuery({
            libraries: libraries.join()
        });
        $.getScript(api_uri.toString());
    }
    
    $offer_advertiser_locations.each(function() {
        load_regiobon_advertiser_locationmap($(this));
    });
    
    var $organizations_overview = $('.ZMSCustom-regiobon_organizations_overview-main');
    var $offers_overview = $('.ZMSCustom-regiobon_offers_overview-main');
    if ($offers_overview.length > 0) {
        var offers_overview_id = $offers_overview.attr('id');
        var $filter = $('form.form_regiobon_offers_settings');
        var $filter_title = $('> .title', $filter);
        var $filter_overview = $('<div class="overview"><div class="info"></div></div>').insertAfter($filter_title);
        var $btn_change_settings = $('<a class="btn_change_settings"><span>Filter anpassen</span></a>').appendTo($filter_overview);
        var $btn_reset_settings = $('<a href="" class="btn_reset_settings"><span>Filter zurücksetzen</span></a>').appendTo($filter_overview);
        
        var $show_map = $('input', $('<div id="formfield_regiobon_offers_settings_show_map" class="formfield formfield-input-checkbox formfield_show_map"><div class="field_input"><input type="checkbox" name="show_map" id="field_input_regiobon_offers_settings_show_map" class="fieldcontrol-show_map" value="1" checked></div><div class="field_label"><label for="field_input_regiobon_offers_settings_show_map"><span>Karte anzeigen</span></label></div></div>').appendTo($filter_overview));
        
        
        var $filter_innercontent = $('> .innercontent', $filter);
        var $filter_formfields = $('.formfield', $filter);
        var $filter_types_inputs = $('input.types', $filter);
        var $filter_exclude_types_inputs = $('input.exclude_types', $filter);
        var $filter_show_organizations_input = $('input.show_organizations', $filter);
        var $filter_branches_inputs = $('fieldset.formcheckboxlist_branches input', $filter);
        var $filter_regions_inputs = $('fieldset.formfieldset_regions input', $filter);
        var $filter_inputs = $filter_types_inputs
            .add($filter_exclude_types_inputs)
            .add($filter_show_organizations_input)
            .add($filter_branches_inputs)
            .add($filter_regions_inputs);
        
        var $overview_offers_innercontent = $('> .offers > .innercontent', $offers_overview);
        
        function update_overview(filter_branches, filter_regions) {
            var filtered = false;
            var filter_branches = $filter_branches_inputs.fieldValue();
            
            var $checked_branches = $filter_branches_inputs.filter(':checked');
            var $checked_regions = $filter_regions_inputs.filter(':checked');
            
            var info = '';
            if (filter_branches.length > 0) {
                filtered = true;
                info += $checked_branches.map(function() {return '<span class="branch">' + $.trim($(this).parent().next().text()) + '</span>';}).get().join(', ');
            } else {
                info += 'Alle Branchen';
            }
            
            if ($checked_regions.length == 1) {
                filtered = true;
                info += ' aus der Region ' + $checked_regions.map(function() {return '<span class="region">' + $.trim($(this).parent().next().text()) + '</span>';}).get().join(', ');
            } else if ($checked_regions.length > 1) {
                filtered = true;
                info += ' aus den Regionen ' + $checked_regions.map(function() {return '<span class="region">' + $.trim($(this).parent().next().text()) + '</span>';}).get().join(', ');
            }
            else {
                info += ' aus allen Regionen';
            }
            info += ' anzeigen.'
            $('.info', $filter_overview).html(info);
            
            if (filtered) {
                if (!$filter.hasClass('filtered')) {
                    $filter.addClass('filtered');
                }
            } else {
                $filter.removeClass('filtered');
            }
            
            update_map();
        }
        
        var markers = [];
        function update_map() {
            load_google_maps_api();
            if (typeof(google) == typeof(undefined)) {
                setTimeout(function() {
                    update_map();
                }, 100);
            } else {
                try {
                    var $map = $('> .map-wrapper .map', $offers_overview);
                    var GoogleMapsMap = $map.data('GoogleMapsMap');
                    if (typeof(GoogleMapsMap) == typeof(undefined)) {
                        GoogleMapsMap = new google.maps.Map($map[0], {
                            zoom: 1,
                            //mapTypeId: 'roadmap',
                        });
                        $map.data('GoogleMapsMap', GoogleMapsMap);
                    }
                    var GoogleMapsMarkerInfo = $map.data('GoogleMapsMarkerInfo');
                    if (typeof(GoogleMapsMarkerInfo) == typeof(undefined)) {
                        var GoogleMapsMarkerInfo = new google.maps.InfoWindow({
                            pixelOffset: new google.maps.Size(5, 5)
                        });
                        $map.data('GoogleMapsMarkerInfo', GoogleMapsMarkerInfo);
                    }
                    while (markers.length) {
                        markers.pop().setMap(null);
                    }
                    
                    var advertisers = [];
                    var GoogleMapsMapBounds = new google.maps.LatLngBounds();
                    $('.ZMSCustom-regiobon_offer', $offers_overview).each(function() {
                        var offer = this;
                        var $offer = $(offer);
                        var data = get_data($offer);
                        var advertiser = data['advertiser'];
                        if (advertisers.indexOf(advertiser.aid) == -1) {
                            advertisers.push(advertiser.aid);
                        }
                        var GoogleMapsLatLng = new google.maps.LatLng(advertiser['latitude'], advertiser['longitude']);
                        GoogleMapsMapBounds.extend(GoogleMapsLatLng);
                        var GoogleMapsMarker = new google.maps.Marker({
                            map: GoogleMapsMap,
                            position: GoogleMapsLatLng,
                            title: $.trim($('.title', $offer).text()),
                        });
                        markers.push(GoogleMapsMarker);
                        google.maps.event.addListener(GoogleMapsMarker, 'click', function() {
                            GoogleMapsMarkerInfo.setContent($offer.clone().removeClass('ZMSCustom-regiobon_offer-short').addClass('ZMSCustom-regiobon_offer-mapinfo')[0]);
                            GoogleMapsMarkerInfo.open(GoogleMapsMap,GoogleMapsMarker);
                        });
                    });
                    
                    var $checked_branches = $filter_branches_inputs.filter(':checked');
                    var $checked_regions = $filter_regions_inputs.filter(':checked');
                    
                    if ($organizations_overview.length > 0 && $checked_branches.length == 0 && $checked_regions.length == 0) {
                        $('.ZMSCustom-regiobon_organization', $organizations_overview).each(function() {
                            var $organization = $(this);
                            var advertiser = get_data($organization);
                            if (advertisers.indexOf(advertiser['aid']) == -1) {
                                var GoogleMapsLatLng = new google.maps.LatLng(advertiser['latitude'], advertiser['longitude']);
                                GoogleMapsMapBounds.extend(GoogleMapsLatLng);
                                var GoogleMapsMarker = new google.maps.Marker({
                                    map: GoogleMapsMap,
                                    position: GoogleMapsLatLng,
                                    title: $.trim($('.text', $organization).text()),
                                    icon: 'https://maps.google.com/mapfiles/ms/micons/blue-dot.png'
                                });
                                markers.push(GoogleMapsMarker);
                                google.maps.event.addListener(GoogleMapsMarker, 'click', function() {
                                    var $clone = $organization.clone().removeClass('ZMSCustom-regiobon_organization-short').addClass('ZMSCustom-regiobon_organization-mapinfo');
                                    $('a.logo', $clone).removeClass('vertical-middle').removeAttr('style');
                                    GoogleMapsMarkerInfo.setContent($clone[0]);
                                    GoogleMapsMarkerInfo.open(GoogleMapsMap,GoogleMapsMarker);
                                });
                            }
                        });
                    }

                    GoogleMapsMap.setCenter(GoogleMapsMapBounds.getCenter());
                    GoogleMapsMap.fitBounds(GoogleMapsMapBounds);                    
                    
                } catch (e) {
                    setTimeout(function() {
                        update_map();
                    }, 100);
                }
            }
        }
        
        update_overview();
        
        $btn_change_settings.on('click', function(event) {
            event.preventDefault();
            var $this = $(this);
            if ($filter_innercontent.is(':visible')) {
                $filter.removeClass('active');
            } else {
                $filter.addClass('active');
            }
        });
        
        $btn_reset_settings.on('click', function(event) {
            event.preventDefault();
            if ($filter.hasClass('filtered')) {
                $filter_branches_inputs.removeAttr('checked');
                $filter_regions_inputs.removeAttr('checked');
                $filter_formfields.removeClass('active');
                $offers_overview.addClass('loading');
                $overview_offers_innercontent.load(
                    'ajax_get_offers_html',
                    $filter_inputs.fieldSerialize(),
                    function () {
                        $offers_overview.removeClass('loading');
                        update_overview();
                    }
                );
            }
        });
        
        $filter_innercontent.on('change', 'input', function() {
            $offers_overview.addClass('loading');
            try {$body.data('regiobon_offers_settings-notification').close();} catch(e) {}
            var notify = $.notify(
                {
                    title: 'ich filtere ...',
                    message: '',
                    url: '#' + offers_overview_id + '_offers',
                    target: '_self'
                },
                {
                    type: 'regiobon_offers_settings-submit',
                    delay: 0,
                    newest_on_top: true,
                    placement: {
                        from: 'bottom',
                        align: 'center'
                    },
                    animate: {
                        enter: 'animated bounceInUp',
                        exit: 'animated bounceOutDown'
                    }
                }
            );
            $body.data('regiobon_offers_settings-notification', notify);
            $overview_offers_innercontent.load(
                'ajax_get_offers_html',
                $filter_inputs.fieldSerialize(),
                function () {
                    $offers_overview.removeClass('loading');
                    update_overview();
                    var notify = $body.data('regiobon_offers_settings-notification');
                    notify.update({
                        type: 'regiobon_offers_settings-success',
                        title: 'Filter angewendet',
                        message: 'zu den Angeboten'
                    });
                    setTimeout(function() {
                        notify.close();
                    }, 2500);
                }
            );
        });
        
        $show_map.on('change', function(event) {
            if ($show_map.is(':checked')) {
                if (!$offers_overview.hasClass('show-map')) {
                    $offers_overview.addClass('show-map');
                    update_map();
                    $.cookies.set('show_map-' + offers_overview_id, true);
                }
            } else {
                $offers_overview.removeClass('show-map');
                $.cookies.set('show_map-' + offers_overview_id, false);
            }
        });
        if ($show_map.is(':checked')) {
            if (!$offers_overview.hasClass('show-map')) {
                $offers_overview.addClass('show-map');
                update_map();
            }
        } else {
            $offers_overview.removeClass('show-map');
        }
        if ($.cookies.get('show_map-' + offers_overview_id) && !$offers_overview.hasClass('show-map')) {
            $show_map.prop('checked', true).trigger('change');
        }
    }
}

function init_regiobon_userpanel() {
    $('.ZMSCustom-regiobon_userpanel_offers-main > .existing_offers .offer, .ZMSCustom-regiobon_userpanel_offers-main > .new_offers .offer').each(function() {
        var $container = $(this);
        var id = $container.attr('id');
        var $title = $('> .header > .title', $container);
        var $content = $('> .content', $container).attr('id', id + '_content').on('show.bs.collapse', function() {
            $container.addClass('expanded');
        }).on('hidden.bs.collapse', function() {
            $container.removeClass('expanded');
        });
        $title.attr('data-toggle', 'collapse').attr('data-target', '#' + id + '_content');
        $('> .functions a.btn_collapse', $content).attr('data-toggle', 'collapse').attr('data-target', '#' + id + '_content');
    });
    
    $('.ZMSCustom-regiobon_userpanel_offers-main form.form_view_settings input').on('change', function(event) {
        var $this = $(this);
        var $form = $this.parents('form.form_view_settings');
        $form.submit();
    });
    
    $('.ZMSCustom-regiobon_userpanel_offers-main a.btn_more, .ZMSCustom-regiobon_userpanel_offers-main .existing_offers .basket .title a, .ZMSCustom-regiobon_userpanel_offers-main .existing_offers .existing_options a').on('click', function(event) {
        if (!event.ctrlKey) {
            event.preventDefault();
            var url = new URI($(this).attr('href'));
            url.addQuery('contentonly', '1');
            $.nmManual(url);
        }
    });
    
    $body.on('focus', '.ZMSCustom-regiobon_userpanel_offers-main .existing_offers .oid input, form.form_regiobon_userpanel_edit_organization .formfield_aid input', function(event) {
        this.select();
    })
    
    $('form.form_set_new_offer_settings .formfield_user_active_from input').bootstrapDatepicker({
        language: 'de',
    }).on('change', function(event) {
        var $input = $(this);
        var $field = $input.parentsUntil('.formfield_user_active_from').parent();
        var $form = $field.parentsUntil('form').parent();
        $form.ajaxSubmit({
            data: {contentonly: 1},
            success: function(responseText, statusText, xhr, $form) {
                if (!$field.hasClass('success')) {
                    $field.addClass('success');
                }
            },
            error: function() {
                if (!$input.hasClass('error')) {
                    $input.addClass('error');
                }
                if (!$field.hasClass('error')) {
                    $field.addClass('error');
                }
            }
        });
    });
    
    $('form.form_set_existing_offer_settings .formfield input').bootstrapDatepicker({
        language: 'de'
    }).on('change', function(event) {
        var $input = $(this);
        var $field = $input.parentsUntil('.formfield').parent();
        var $form = $field.parentsUntil('form').parent();
        
        $form.ajaxSubmit({
            data: {contentonly: 1},
            success: function(responseText, statusText, xhr, $form) {
                if (!$field.hasClass('success')) {
                    $field.addClass('success');
                }
            },
            error: function() {
                if (!$input.hasClass('error')) {
                    $input.addClass('error');
                }
                if (!$field.hasClass('error')) {
                    $field.addClass('error');
                }
            }
        });
    });
    $('form.form_set_existing_offer_branches').on('submit', function(event) {event.preventDefault();}).on('change', 'input', function(event) {
        var $this = $(this);
        var $form = $this.parents('form.form_set_existing_offer_branches');
        $form.ajaxSubmit();
    });
    $('form.form_set_existing_offer_regions').on('submit', function(event) {event.preventDefault();}).on('change', 'input', function(event) {
        console.log('set region');
        var $this = $(this);
        var $form = $this.parents('form.form_set_existing_offer_regions');
        $form.ajaxSubmit();
    });
    $('form.form_set_existing_offer_take_button_url').on('submit', function(event) {event.preventDefault();}).on('change', 'input[name="take_button_url"]', function(event) {
        var $this = $(this);
        var $form = $this.parents('form.form_set_existing_offer_take_button_url');
        var $take_button_target_blank = $('input[name="take_button_target_blank"]', $form);
        if ($this.val().length > 0) {
            $take_button_target_blank.val('1');
        } else {
            $take_button_target_blank.val('0');
        }
        $form.ajaxSubmit();
    });
    
    $('.edit_existing_offer .short a, .edit_existing_offer .main a').on('click', function(event) {
        event.preventDefault();
    });
    
}


function init_regiobon_offers_overview_slides() {
    var $overviews = $('.ZMSCustom-regiobon_offers_overview-main.slides');
    $overviews.each(function() {
        var $overview = $(this);
        var overview_id = $overview.attr('id');
        var data = get_data($overview);
        var attrs = {
            'data-ride': 'carousel'
        }
        if (data && data['interval']) {
            attrs['data-interval'] = data['interval'];
        } else {
            attrs['data-interval'] = 8000;
        }
        var $carousel = $('> .offers', $overview).attr('id', overview_id + '_carousel').attr(attrs).addClass('carousel slide');
        var $carouselInner = $('> .innercontent', $carousel).removeClass('innercontent').addClass('carousel-inner').attr('role', 'listbox');
        var $targets = $('> *', $carouselInner).addClass('carousel-item item');
        $targets.first().addClass('active');
        
        
        if ($targets.length > 1) {
//             var $indicators = $('<ol class="carousel-indicators" />').appendTo($carousel);
//             $targets.each(function(index) {
//                 $('<li data-target="' + overview_id + '_carousel" data-slide-to="' + index + '" />').appendTo($indicators);
//             });
//             $('> li', $indicators).first().addClass('active');
            
            var $left = $('<a class="left carousel-control" href="#' + overview_id + '_carousel" role="button" data-slide="prev"><span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span><span class="sr-only">zurück</span></a>').appendTo($carousel);
            var $right = $('<a class="right carousel-control" href="#' + overview_id + '_carousel" role="button" data-slide="next"><span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span><span class="sr-only">vorwärts</span></a>').appendTo($carousel);
        }
        
        var $statecontrols = $('<ul class="carousel-statecontrols" />').appendTo($carousel);
        var $play = $('<li class="carousel-play" />').appendTo($statecontrols);
        var $pause = $('<li class="carousel-pause" />').appendTo($statecontrols);
        
        $play.on('click', function() {
            if (!$play.hasClass('active')) {
                $carousel.carousel('cycle');
                $play.addClass('active');
                $pause.removeClass('active');
            }
        });
        $pause.on('click', function() {
            if (!$pause.hasClass('active')) {
                $carousel.carousel('pause');
                $play.removeClass('active');
                $pause.addClass('active');
            }
        });
        
        $overview.swipe({
            swipeRight: function() {
                $carousel.carousel('prev');
            },
            swipeLeft: function() {
                $carousel.carousel('next');
            }
        });
        
        $overview.addClass('loaded');
    });
}

function init_regiobon_video() {
    $('.bon-titleimage video').on('play', function() {
        var video = this;
        var $video = $(video);
        var $container = $video.parents('.bon-titleimage');
        $container.removeClass('paused');
    });
    $('.bon-titleimage video').on('pause', function() {
        var video = this;
        var $video = $(video);
        var $container = $video.parents('.bon-titleimage');
        $container.addClass('paused');
    });
}

$(function() {
    init_regiobon_offers_overview_slides();
    init_regiobon_video();
});



$(function() {
    var datepicker = $.fn.datepicker.noConflict(); // return $.fn.datepicker to previously assigned value
    $.fn.bootstrapDatepicker = datepicker;         // give $().bootstrapDP the bootstrap-datepicker functionality
    
    $('form:not([role])').attr('role', 'form');
    
    var $navigationpane = $('#navigationpane');
    
    var $navigation = $('#navigation');
    $('li', $navigation).each(function() {
        var $li = $(this);
        var $ul = $('> ul', $li);
        if ($ul.length > 0) {
            var $a = $('> a', $li);
            $li.addClass('dropdown');
            $a.addClass('dropdown-toggle').attr('data-toggle', 'dropdown').attr('role', 'button').attr('aria-expanded', 'false').attr('data-target', '#').attr('aria-haspopup', true).append($('<span class="caret" />'));
            $ul.addClass('dropdown-menu').attr('role', 'menu');
        }
    });
    
    $('.ZMSCustom-gallery_item').wrap('<div class="ZMSCustom-gallery_item_wrapper" />');
    
    handle_title_tooltips('#functionspane ul.functions a, .ZMSCustom-graphic_btn_zoom');
   
    init_footerpane();
    init_regiobon_offers();
    init_regiobon_userpanel();
    
    var uri = new URI();
    var uri_query = URI.parseQuery(uri.query());
    var uri_hash = uri.hash();
    
    var highlight_offer = uri_query['highlight_offer'];
    if (highlight_offer) {
        var $highlight_offer = $('#' + highlight_offer);
        if ($highlight_offer.length > 0) {
            var offset = $navigationpane.height() + 50;
            $.scrollTo($highlight_offer, 1000, {offset: {top: -offset}});
        }
    }
    
    var scrollto = uri_query['scrollto'];
    if (scrollto) {
        var $scrollto = $('#' + scrollto);
        if ($scrollto.length > 0) {
            var offset = $navigationpane.height() + 50;
            $.scrollTo($scrollto, 1000, {offset: {top: -offset}});
        }
    }
    
    var $uri_hash = $(uri_hash);
    if ($uri_hash.length > 0) {
        var offset = $navigationpane.height() + 50;
        $.scrollTo($uri_hash, 1000, {offset: {top: -offset}});
    } 
});
