Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name steam search unfuck
- // @namespace http://tampermonkey.net/
- // @version 0.1
- // @description try to take over the world!
- // @author javascript olofmeister
- // @match *://store.steampowered.com/search*
- // @grant none
- // ==/UserScript==
- (function() {
- console.log(GameHover.toString());
- GameHover = function( elem, event, divHover, rgHoverData )
- {
- if (!event) var event = window.event;
- var $Elem = $JFromIDOrElement(elem);
- var $Hover = $JFromIDOrElement(divHover);
- var bNewHoverSpeed = typeof ( g_bNewHoverSpeed) != 'undefined' && g_bNewHoverSpeed;
- var oElemState = GetHoverState( $Elem );
- if ( !$Hover.length )
- {
- $Hover = $J("\t\t<div class=\"hover game_hover\" id=\"global_hover\" style=\"display: none; left: 0; top: 0;\">\r\n\t\t\t<div class=\"game_hover_box hover_box\">\r\n\t\t\t\t<div class=\"content\" id=\"global_hover_content\">\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"hover_arrow_left\"><\/div>\r\n\t\t\t<div class=\"hover_arrow_right\"><\/div>\r\n\t\t<\/div>");
- $J(document.body).append( $Hover );
- }
- if ( g_HoverState.hiding && $Hover.is(':visible') && g_HoverState.target == $Elem[0] )
- {
- ShowWithFade( $Hover );
- }
- else if ( ( !$Hover.is(':visible') || g_HoverState.target != $Elem[0] ) && !oElemState.timer )
- {
- oElemState.bWantsHover = true;
- var accountId = ( typeof g_AccountID !== 'undefined' ) && !rgHoverData['public'] ? g_AccountID : 0;
- var bPublic = rgHoverData['public'] || accountId == 0;
- var strTargetPrefix = '';
- var strUrlTarget = '';
- if ( rgHoverData['type'] == 'app' )
- {
- strTargetPrefix = 'hover_app_';
- strUrlTarget = 'apphover' + ( bPublic ? 'public' : '' ) + '/' + rgHoverData['id'];
- }
- else if ( rgHoverData['type'] == 'sub' )
- {
- strTargetPrefix = 'hover_sub_';
- strUrlTarget = 'subhover' + ( bPublic ? 'public' : '' ) + '/' + rgHoverData['id'];
- }
- else if ( rgHoverData['type'] == 'bundle' )
- {
- strTargetPrefix = 'hover_bundle_';
- strUrlTarget = 'bundle/' + rgHoverData['id'] + '/hover' + ( bPublic ? '_public' : '' ) + '/';
- }
- else
- {
- return;
- }
- var targetId = strTargetPrefix + rgHoverData['id'];
- var $HoverData = $JFromIDOrElement( targetId );
- var params = rgHoverData['params'] || {};
- var nStartHoverTime = new Date().getTime();
- var fnComputeHoverDelay = bNewHoverSpeed ?
- function() { return Math.max( 100 - ( new Date().getTime() - nStartHoverTime ), 100 );} :
- function() { return 20; };
- if ( !$HoverData.length && !oElemState.bAjaxRequestMade )
- {
- var rgAjaxParams = { u: accountId };
- if ( bPublic )
- {
- // is cc needed?
- rgAjaxParams = { /*cc: rgHoverData['cc'],*/ l: 'english' };
- }
- if ( rgHoverData['v6'] )
- {
- rgAjaxParams['pagev6'] = true;
- }
- window.setTimeout( function() {
- if ( oElemState.bWantsHover && !oElemState.bAjaxRequestMade ) {
- oElemState.bAjaxRequestMade = true;
- $J.get( 'https://store.steampowered.com/' + strUrlTarget, rgAjaxParams ).done( function( html )
- {
- var $Content = $J(html);
- $Content.hide();
- $Hover.find( '.content' ).append( $Content );
- ShowGameHover( $Elem, $Hover, targetId, params, fnComputeHoverDelay() );
- } );
- }
- }, bNewHoverSpeed ? 5 : 75 );
- }
- if ( !oElemState.timer )
- {
- oElemState.timer = window.setTimeout(function () {
- oElemState.timer = false;
- oElemState.bReadyForHover = true;
- ShowGameHover( $Elem, $Hover, targetId, params, fnComputeHoverDelay() );
- }, bNewHoverSpeed ? 10 : 150 );
- }
- }
- }
- ShowGameHover = function( elem, divHover, targetContent, params, speed )
- {
- console.log(speed);
- var $Elem = $JFromIDOrElement( elem );
- var $Hover = $JFromIDOrElement( divHover );
- var $Target = $JFromIDOrElement( targetContent );
- var oElemState = GetHoverState( $Elem );
- if ( !$Target.length || !oElemState.bWantsHover || !oElemState.bReadyForHover || !$J.contains( document, $Elem[0] ) )
- return;
- $Target.siblings().hide();
- $Target.show();
- g_HoverState.target = $Elem[0];
- var $Toparea = $Target.find( '.hover_top_area' );
- if ( params && params.top_area_content )
- {
- $Toparea.html( params.top_area_content );
- $Toparea.show();
- }
- else if ( $Toparea.length )
- {
- $Toparea.hide();
- }
- // "show" the hover, but not "visible", letting us do some positioning
- $Hover.css( 'visibility', 'hidden' ).show();
- var $HoverBox = $Hover.find( '.hover_box' );
- var $HoverArrowLeft = $Hover.find( '.hover_arrow_left' );
- var $HoverArrowRight = $Hover.find( '.hover_arrow_right' );
- var offset = $Elem.offset();
- var nWindowScrollTop = $J(window).scrollTop();
- var nWindowScrollLeft = $J(window).scrollLeft();
- var nViewportWidth = $J(window).width();
- var nViewportHeight = $J(window).height();
- var nHoverPositionLeft, nHoverPositionTop;
- var $HoverArrow = $HoverArrowLeft;
- var boxRightViewport = ( offset.left - nWindowScrollLeft ) + $Elem.outerWidth() + $HoverBox.width() + 14;
- var nSpaceRight = nViewportWidth - boxRightViewport;
- var nSpaceLeft = offset.left - $Hover.width();
- if( nSpaceLeft < -10 && nSpaceRight < -10 )
- {
- //no room at all
- $Hover.hide().css('visibility','');
- return; //skip showing the hover
- }
- else if ( nSpaceRight < 14 && nSpaceLeft > nSpaceRight )
- {
- nHoverPositionLeft = offset.left - $Hover.outerWidth() + 8;
- $HoverArrow = $HoverArrowRight;
- $HoverArrowLeft.hide();
- $HoverArrowRight.show();
- }
- else
- {
- nHoverPositionLeft = offset.left + $Elem.outerWidth() - 8;
- $HoverArrowLeft.show();
- $HoverArrowRight.hide();
- }
- var nTopAdjustment = -13;
- if ( $Elem.height() < 63 )
- nTopAdjustment = Math.floor( $Elem.height() ) / 2 - 56;
- nHoverPositionTop = offset.top + nTopAdjustment;
- $Hover.offset( {top: nHoverPositionTop, left: nHoverPositionLeft} );
- var nTargetTopViewport = ( offset.top - nWindowScrollTop ) + nTopAdjustment;
- if ( nTargetTopViewport + $HoverBox.height() + 8 > nViewportHeight )
- {
- var nViewportAdjustment = ( $HoverBox.height() + 8 ) - ( nViewportHeight - nTargetTopViewport );
- nViewportAdjustment = Math.min( $HoverBox.height() - 74, nViewportAdjustment );
- var nViewportAdjustedHoverTop = offset.top - nViewportAdjustment;
- $Hover.css( 'top', nViewportAdjustedHoverTop + 'px' );
- $HoverArrow.css( 'top', ( 48 + nHoverPositionTop - nViewportAdjustedHoverTop ) + 'px' );
- }
- else
- {
- $HoverArrow.css( 'top', '' );
- }
- $Hover.hide();
- $Hover.css( 'visibility', '' );
- ShowWithFade( $Hover, 10 );
- }
- HideGameHover = function( elem, event, divHover )
- {
- var $Elem = $JFromIDOrElement( elem );
- var $Hover = $JFromIDOrElement( divHover );
- var oElemState = GetHoverState( $Elem );
- if ( !$Hover.length )
- return;
- if (!event) var event = window.event;
- var reltarget = $J( (event.relatedTarget) ? event.relatedTarget : event.toElement );
- if ( reltarget.length && $J.contains( $Elem[0], reltarget[0] ) )
- return;
- if ( oElemState.timer )
- {
- window.clearTimeout( oElemState.timer );
- oElemState.timer = false;
- }
- oElemState.bWantsHover = false;
- oElemState.bReadyForHover = false;
- HideWithFade( divHover, 20 );
- }
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement