$(window).on("load", function() { var width = $(window).width(); //About homepage search button pressed $("#search_button").click(function(){ initiate_search($("#search_input_header").val()); }); //About homepage search Enter pressed $("#search_input_header").keypress(function(e){ if(e.which === 13){ initiate_search($("#search_input_header").val()); } }); // vert text scroller setInterval(function(){ $('#subject_scroller').stop().animate({scrollTop:60},2500,'linear',function(){ $(this).scrollTop(0).find('span:last').after($('span:first', this)); }); }, 2560); // ========================================================================== // COLLECTION COMPARISON TABLE NAV if($('#tab01').html() || $('#disc_table').html()) { position_tnav(); assign_table(); table_init_css(); var col_width_arr = col_width_gen(); var furthest_i = furthest(col_width_arr); reset_table(furthest_i,col_width_arr); check_width_for_nav(); check_nav_show(); var bounce = debounce(function(){ furthest_i = furthest(col_width_arr); reset_table(furthest_i,col_width_arr); check_width_for_nav(); position_tnav(); check_nav_show(); }, 500); window.addEventListener('resize',bounce); // NEXT click scroll interaction $('.table_nav.next').click(function(){ collection_comparison_next(col_width_arr,furthest_i); }); // PREV click scroll interaction $('.table_nav.prev').click(function(){ collection_comparison_prev(col_width_arr,furthest_i); }); var map = {}; onkeydown = onkeyup = function(e){ e = e || event; map[e.keyCode] = e.type == 'keydown'; if(map[16] && map[37]) { collection_comparison_prev(col_width_arr,furthest_i); } else if(map[16] && map[39]) { collection_comparison_next(col_width_arr,furthest_i); } } check_nav_show(); } // END COLLECTION COMPARISON TABLE NAV // ========================================================================== }); // fixes back-forward state saving for webpage cache $(window).bind("pageshow", function(event) { if (event.originalEvent.persisted) { window.location.reload() } }); $(document).ready(function(){ var width = $(window).width(); // accordion nav $(".accordion .acc_trig.open").next(".acc_block").slideDown(300); $(".accordion .acc_trig").click(function(e) { e.preventDefault(); if ($(this).hasClass("open")) { $(this).removeClass("open"); $(this).next(".acc_block").slideUp(300); } else { $(this).parent(".acc_item").siblings(".acc_item").children(".acc_trig").removeClass("open"); $(this).addClass("open"); $(this).parent(".acc_item").siblings(".acc_item").children(".acc_block").slideUp(300); $(this).next(".acc_block").slideDown(300); } }); $(window).resize(function(){ var new_width = $(window).width(); if(width === new_width) {} else { var base = 200; if($('.attention').html()) { base = 190; } if(width <= 753) { base = 140; if($('.attention').html()) { base = 180; } } $('.overlap_page_header .page_header_int .wrap, .page_header .page_header_int .wrap').css('padding-top',base); var nav_main_classes = $('.nav_main').attr('class'); if(width > 753) { if(nav_main_classes.indexOf('menu_active') == -1) { $('.nav_main').addClass('menu_active'); } $('.menu_contain').removeClass('menu_active'); } else { $('.nav_main, .menu_contain').removeClass('menu_active'); } } width = new_width; }); $('.nav_main > ul > li').hover(function(){ if(width > 753) { $(this).find('.menu_contain').toggleClass('hover_active_flex'); $(this).toggleClass('menu_hover'); } }); $('.nav_toggle').click(function(){ var nav_main_classes = $('.nav_main').attr('class').split(/\s+/); if(nav_main_classes.indexOf('menu_active') == -1) { $('.nav_main').addClass('menu_active'); } else { $('.nav_main').removeClass('menu_active'); } var height = 0; var base = 200; if($('.attention').html()) { base = 190; } if(width < 753 ) { base = 140; if($('.attention').html()) { base = 180; } } if($('.nav_main').hasClass('menu_active')) { height = $('.nav_main').height(); } var height_calc = base+height; $('.overlap_page_header .page_header_int .wrap, .page_header .page_header_int .wrap').css('padding-top',height_calc); }); $('.toggle_menu').click(function(){ if(width < 753) { var container = $(this).find('.menu_contain'); var toggle_menu_classes = $(container).attr('class').split(/\s+/); if(toggle_menu_classes.indexOf('menu_active') == -1) { $(container).addClass('menu_active'); } else { $(container).removeClass('menu_active'); } if($(container).hasClass('menu_active')) { $(this).find('.expand').attr('src','/home/images/icon_less_blue3x.png'); } else { $(this).find('.expand').attr('src','/home/images/icon_more_blue3x.png'); } } }); // onclick event tracking function assign_link_tracking() { var linksTracked = document.getElementsByClassName('link_tracked'); for (var i = 0; i < linksTracked.length; i++) { var eventCategory = linksTracked[i].getAttribute('data-category'); var eventLabel = linksTracked[i].getAttribute('data-label'); var eventTracked = "gtag('event', 'click', {'event_category': '" + eventCategory + "', 'event_label': '" + eventLabel + "'});"; linksTracked[i].setAttribute('onclick',eventTracked); } } assign_link_tracking(); // install search plugin link function assign_link_plugin() { var installSearchLinks = document.getElementsByClassName('install_search_plugin'); for (var i = 0; i < installSearchLinks.length; i++) { installSearchLinks[i].setAttribute('href','javascript:installSearchEngine();'); } } assign_link_plugin(); }); // ========================================================================== // COLLECTION COMPARISON TABLE NAV // ------------------------------- function table_init_css() { // some weird css stuff for button generation and positioning $('.table_box').css('overflow-x','hidden'); $('.table_nav').show().css('position','absolute'); $('.table_nav.next').css('right',0); $('.table_nav.prev').hide(); } // ------------------------------- function assign_table() { // add in row and col numbers for parsing structure var row_num = 0; $('.table .tr').each(function(){ var row_class = 'r'+row_num; var col_num = 0; $(this).find('.td').each(function(){ var col_class = 'c'+col_num; $(this).addClass(col_class); col_num++; }); $(this).addClass(row_class); row_num++; }); } // ------------------------------- function col_width_gen() { // grab appropriate widths (table bounding box and cols for later comparison) var col_width_arr = []; $('.table .tr:first .td').each(function(){ col_width_arr.push($(this).width()+40); }); return col_width_arr; } // ------------------------------- function furthest(col_width_arr) { // figure out how many we can have on screen at once via FURTHEST_I var max_width = $('.table_box').width(); var contain_total = 200; var furthest_i = 0; for(var i=0;i= (max_width)) { return i; } } return i; } // ------------------------------- function reset_table(furthest_i,col_width_arr) { // make that how many we can have on screen at once for(var i=0;i furthest_i) { $(i_class).hide(); } else { $(i_class).show(); } } } // ------------------------------- function check_nav_show() { var last_col; var col_list = $('.table .tr:first .td:last').attr('class').split(/\s+/); $.each(col_list, function(i,item){ if(item.match(/c\d/)) { last_col = '.'+item; } }); if($(last_col).is(':visible')) { $('.table_nav.next').hide(); } else { $('.table_nav.next').show(); } var col_list = $('.table .tr:first .td').eq(1).attr('class').split(/\s+/); $.each(col_list, function(i,item){ if(item.match(/c\d/)) { last_col = '.'+item; } }); if($(last_col).is(':hidden')) { $('.table_nav.prev').show(); } else { $('.table_nav.prev').hide(); } check_width_for_nav(); } // ------------------------------- function check_width_for_nav() { if($(window).width() < 768) { if($('.table_nav').hasClass('size_hide')) {} else { $('.table_nav').addClass('size_hide'); } } else { if($('.table_nav').hasClass('size_hide')) { $('.table_nav').removeClass('size_hide'); } } } // ------------------------------- function position_tnav() { var box_h = parseInt($('.table_box').height()); var tabID = $('.table_box').attr("id"); //var box_p = parseInt(document.getElementById('tab01').getBoundingClientRect().top + window.scrollY); var box_p = parseInt(document.getElementById(tabID).getBoundingClientRect().top + window.scrollY); var button_top = box_p + (0.5*box_h); var box_w = parseInt($('.table_box').width()); var window_w = parseInt($(window).width()); var offset_w = 0.5*(window_w - box_w); $('.table_nav').css('top',button_top); $('.table_nav.next').css('margin-right',offset_w - (0.75*offset_w)); $('.table_nav.prev').css('margin-left',offset_w - (0.75*offset_w)); } // ------------------------------- function collection_comparison_prev(col_width_arr,furthest_i) { $('.table .c0').show(); var first_index =1; for(var i=1;i limits[1])) { $(col_ref).hide(); } else { $(col_ref).show(); } } check_nav_show(); } // ------------------------------- function collection_comparison_next(col_width_arr,furthest_i) { $('.table .c0').show(); var last_index = col_width_arr.length-1; for(var i=col_width_arr.length-1;i>0;i--) { var col_ref = '.table .tr:first .td.c'+i; if($(col_ref).is(':visible')) { last_index = i; break; } } var limits = [1,1]; if((furthest_i + last_index) > (col_width_arr.length)) { limits = [(col_width_arr.length-furthest_i),(col_width_arr.length)]; } else { limits = [(last_index),(last_index+furthest_i)]; } for(var i=1;i limits[1])) { $(col_ref).hide(); } else { $(col_ref).show(); } } // check which buttons should be visible check_nav_show(); } // END COLLECTION COMPARISON TABLE NAV // ========================================================================== // ========================================================================== // SEARCH BUTTON ABOUT HOME // ------------------------------- function initiate_search(search_text){ var url ="/search?action=search&query=content:" + search_text + ":and&min=1&max=10&t=header"; if (window.location.href.toLowerCase().indexOf("mwbdvmw") > 0) { url = "https://muse.jhu.edu/search?action=search&query=content:" + search_text + ":and&min=1&max=10&t=header"; } this.location = url; } // SEARCH BUTTON ABOUT HOME // ========================================================================== // GLOBAL // ========================================================================== function debounce(func, wait, immediate) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if (!immediate) func.apply(context, args); }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) func.apply(context, args); }; };