/*
Global blogs js for headers and footers.
*/
jQuery(function(){
if ( CN.cookie.get('WiredEditor') || document.domain.indexOf("localhost") >= 0 ) {
jQuery('.entryEdit').show();
CN.debug.info('Enable edit');
}
/* Facebook share ****************************************************************/
if ( jQuery( 'div.facebook-share-button' ).length > 0 ) {
fburl = 'https://web.archive.org/web/20140326223720/https://graph.facebook.com?id=' + window.location.href;
jQuery.getJSON( fburl,
function( data ){
if ( data.shares ) {
var shares_formatted,
shares_rounded;
switch ( true ) {
case ( data.shares > 999999 ):
// 1,000,000+: one decimal place, e.g. '4.5m'
shares_rounded = data.shares/1000000;
shares_formatted = shares_rounded.toFixed(1) + 'm';
break;
case ( data.shares > 99999 ):
// 100,000+: no decimal places, e.g. '240k'
shares_rounded = Math.round( data.shares/1000 );
shares_formatted = shares_rounded + 'k';
break;
case ( data.shares > 999 ):
// 1,000+: one decimal place, e.g. '54.9k'
shares_rounded = data.shares/1000;
shares_formatted = shares_rounded.toFixed(1) + 'k';
break;
default:
shares_formatted = data.shares;
break;
}
jQuery('.facebook-share-button div').prepend( shares_formatted ).animate({opacity: 1.0});
}
}
);
}
/* Prev/Next ********************************************************************/
if ( jQuery('div.entry').length > 0 ) {
var postNavElem = jQuery('#post_nav');
var entryElem = jQuery('div.entry');
// Visibility/stickiness based on scroll position
jQuery(window).scroll( function(event) {
var scrollPos = jQuery(window).scrollTop(),
//docHeight = jQuery(document).height(),
winHeight = jQuery(window).height(),
articleHeight = entryElem.height(),
articleOffset = entryElem.offset(),
scrollThreshold = scrollPos + winHeight,
scrollTrigger = articleOffset.top + articleHeight/2,
footerOffset = jQuery('#footer').offset().top,
stickyTrigger = scrollPos + winHeight;
if ( scrollThreshold > scrollTrigger ) {
postNavElem.slideDown('fast').removeClass('hidden').addClass('visible');
} else {
postNavElem.slideUp('fast').addClass('hidden').removeClass('visible');
}
if ( footerOffset < stickyTrigger ) {
postNavElem.addClass('relative').removeClass('fixed');
} else {
postNavElem.removeClass('relative').addClass('fixed');
}
});
// localStorage for toggle state
var toggleStateStored = store.get('wired-post_nav-toggle');
if ( toggleStateStored ) {
var toggleState = store.get('wired-post_nav-toggle');
} else {
var toggleState = 'expanded';
store.set('wired-post_nav-toggle',toggleState);
}
postNavElem.addClass(toggleState);
// Nav hints
jQuery('#post_nav a.prev img').attr('title','Previous article (Press Shift + j or Shift + [left arrow])');
jQuery('#post_nav a.next img').attr('title','Next article (Press Shift + k or Shift + [right arrow])');
// Toggle
function postNavToggle(){
postNavElem.toggleClass('collapsed expanded');
var stateClass = postNavElem.attr('class');
if ( stateClass.indexOf('collapsed') >= 0 ) {
var toggleState = 'collapsed';
jQuery('#post_nav button').attr('title','Expand menu (Press m)').html('Expand');
} else if ( stateClass.indexOf('expanded') >= 0 ) {
var toggleState = 'expanded';
jQuery('#post_nav button').attr('title','Collapse menu (Press m)').html('Collapse');
}
store.set('wired-post_nav-toggle',toggleState);
}
jQuery('#post_nav button').click( function(){
postNavToggle();
});
// Keyboard nav
jQuery(document).keyup( function(event) {
if ( !( jQuery('input:text, textarea').is(':focus') ) ) {
if ( ( event.shiftKey && event.keyCode == 74 ) || ( event.shiftKey && event.keyCode == 37 ) ) {
// Shift + j or Shift + [left arrow] : Previous post
var prevHref = jQuery('#post_nav a.prev').attr('href');
if ( prevHref ) {
window.location.href = prevHref;
}
} else if ( ( event.shiftKey && event.keyCode == 75 ) || ( event.shiftKey && event.keyCode == 39 ) ) {
// Shift + k or Shift + [right arrow] : Next post
var nextHref = jQuery('#post_nav a.next').attr('href');
if ( nextHref ) {
window.location.href = nextHref;
}
} else if ( event.shiftKey && event.keyCode == 82 ) {
// Shift + r : Random post
var randHref = jQuery('#post_nav a.rand').attr('href');
if ( randHref ) {
window.location.href = randHref;
}
} else if ( event.keyCode == 77 ) {
// m : Toggle menu
if ( postNavElem.hasClass('visible') ) {
postNavToggle();
}
} else if ( event.shiftKey && event.keyCode == 191 ) {
// Shift + / (?) : Help
alert('Press Shift + j or Shift + [left arrow] to navigate to the previous article; press Shift + k or Shift + [right arrow] to navigate to the next. If the menu is visible, press m to toggle its state.')
}
}
});
}
/* Omniture module tracking **************************************************/
// find links with class that starts with "module-"
jQuery('a[class*="module-"]').on("click", function() {
var classList = jQuery(this).attr('class').split(/\s+/);
for (var i=0; i < classList.length; i++) {
var className = classList[i];
if (className.indexOf("module-") !== false) {
// extract portion of string after "module-" and save to localStorage
var toRemove = "module-";
var moduleName = className.replace(toRemove,'');
store.set('referringModuleName',moduleName);
}
}
});
/* Footer ********************************************************************/
// Select links
jQuery('#footer_dropdowns_subscribe, #footer_dropdowns_sites, #footer_dropdowns_international').bind('change', function() {
window.open(jQuery(this).val());
});
/* Sign In/Sign Out ***********************************************************/
// Check if the user is logged in
var username_string = CN.cookie.get('amg_user_info');
if (username_string !== '') {
jQuery('#gh_greeting').html('Hi, ' + username_string + ' | Sign Out |');
} else {
jQuery('#gh_greeting').html('Sign In |');
}
/* Reviews Category Dropdown */
jQuery('#pnav_list_test a.primaryLink').bind('mouseenter', function() {
// hide all the menus that may be showing already
jQuery('.dropdownMenu').hide();
jQuery(this).parentsUntil('#pnav_list_test').find('.dropdownMenu').show();
jQuery(this).addClass('over');
});
// Actions on leaving the dropdown
jQuery('#pnav_list_test li .dropdownMenu').bind('mouseleave', function() {
jQuery(this).delay(500).fadeOut(200);
jQuery(this).parentsUntil('#pnav_list_test').find('a.primaryLink').removeClass('over');
});
/* Top 3 */
var tallestHeight = 0;
var top3 = jQuery('body.top-3 div.top-3-product ul.top-3-details').not('body.top-3 div.top-3-product.product-4 ul.top-3-details');
top3.each(function(){
if( jQuery(this).height() > tallestHeight ) {
tallestHeight = jQuery(this).height();
}
});
top3.height(tallestHeight).children('li.rating-review-link').addClass('sticky');
});
/* Reviews */
function resizeImage(img,new_width,new_height) {
if(img.width == new_width && img.height == new_height){
img.className = "prod_review_img_on";
return;
} else {
if (jQuery(img).height() > jQuery(img).width()) {
var h = new_height;
var w = Math.ceil($(img).width() / jQuery(img).height() * new_height);
} else {
var w = new_width;
var h = Math.ceil(jQuery(img).height() / jQuery(img).width() * new_width);
}
jQuery(img).css({ height: h, width: w });
img.className = "prod_review_img_offset";
}
}