View difference between Paste ID: HJbSrWc9 and DHYcTh9k
SHOW: | | - or go back to the newest paste.
1
// ==UserScript==
2-
// @name         New Userscript
2+
// @name         steam search unfuck
3
// @namespace    http://tampermonkey.net/
4
// @version      0.1
5
// @description  try to take over the world!
6-
// @author       You
6+
// @author       javascript olofmeister
7-
// @match        https://store.steampowered.com/search/
7+
// @match        *://store.steampowered.com/search*
8
// @grant        none
9
// ==/UserScript==
10
11
(function() {
12
console.log(GameHover.toString());
13
14
GameHover = function( elem, event, divHover, rgHoverData )
15
{
16
	if (!event) var event = window.event;
17
	var $Elem = $JFromIDOrElement(elem);
18
	var $Hover = $JFromIDOrElement(divHover);
19
	var bNewHoverSpeed = typeof ( g_bNewHoverSpeed) != 'undefined' && g_bNewHoverSpeed;
20
21
	var oElemState = GetHoverState( $Elem );
22
23
	if ( !$Hover.length )
24
	{
25
				$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>");
26
		$J(document.body).append( $Hover );
27
	}
28
29
	if ( g_HoverState.hiding && $Hover.is(':visible') && g_HoverState.target == $Elem[0] )
30
	{
31
		ShowWithFade( $Hover );
32
	}
33
	else if ( ( !$Hover.is(':visible') || g_HoverState.target != $Elem[0] ) && !oElemState.timer )
34
	{
35
		oElemState.bWantsHover = true;
36
		var accountId = ( typeof g_AccountID !== 'undefined' ) && !rgHoverData['public'] ? g_AccountID : 0;
37
		var bPublic = rgHoverData['public'] || accountId == 0;
38
		var strTargetPrefix = '';
39
		var strUrlTarget = '';
40
		if ( rgHoverData['type'] == 'app' )
41
		{
42
			strTargetPrefix = 'hover_app_';
43
			strUrlTarget = 'apphover' + ( bPublic ? 'public' : '' ) + '/' + rgHoverData['id'];
44
		}
45
		else if ( rgHoverData['type'] == 'sub' )
46
		{
47
			strTargetPrefix = 'hover_sub_';
48
			strUrlTarget = 'subhover' + ( bPublic ? 'public' : '' ) + '/' + rgHoverData['id'];
49
		}
50
		else if ( rgHoverData['type'] == 'bundle' )
51
		{
52
			strTargetPrefix = 'hover_bundle_';
53
			strUrlTarget = 'bundle/' + rgHoverData['id'] + '/hover' + ( bPublic ? '_public' : '' ) + '/';
54
		}
55
		else
56
		{
57
			return;
58
		}
59
60
		var targetId = strTargetPrefix + rgHoverData['id'];
61
		var $HoverData = $JFromIDOrElement( targetId );
62
		var params = rgHoverData['params'] || {};
63
		var nStartHoverTime = new Date().getTime();
64
		var fnComputeHoverDelay = bNewHoverSpeed ?
65
			function() { return Math.max( 100 - ( new Date().getTime() - nStartHoverTime ), 100 );} :
66
			function() { return 20; };
67
68
		if ( !$HoverData.length && !oElemState.bAjaxRequestMade )
69
		{
70
			var rgAjaxParams = { u: accountId };
71
			if ( bPublic )
72
			{
73
				// is cc needed?
74
				rgAjaxParams = { /*cc: rgHoverData['cc'],*/ l: 'english' };
75
			}
76
			if ( rgHoverData['v6'] )
77
			{
78
				rgAjaxParams['pagev6'] = true;
79
			}
80
81
			window.setTimeout( function() {
82
				if ( oElemState.bWantsHover && !oElemState.bAjaxRequestMade ) {
83
					oElemState.bAjaxRequestMade = true;
84
					$J.get( 'https://store.steampowered.com/' + strUrlTarget, rgAjaxParams ).done( function( html )
85
					{
86
						var $Content = $J(html);
87
						$Content.hide();
88
						$Hover.find( '.content' ).append( $Content );
89
						ShowGameHover( $Elem, $Hover, targetId, params, fnComputeHoverDelay()  );
90
					} );
91
				}
92
			}, bNewHoverSpeed ? 5 : 75 );
93
		}
94
		if ( !oElemState.timer )
95
		{
96
			oElemState.timer = window.setTimeout(function () {
97
				oElemState.timer = false;
98
				oElemState.bReadyForHover = true;
99
				ShowGameHover( $Elem, $Hover, targetId, params, fnComputeHoverDelay() );
100
			}, bNewHoverSpeed ? 10 : 150 );
101
		}
102
	}
103
104
}
105
106
    ShowGameHover = function( elem, divHover, targetContent, params, speed )
107
{
108
	console.log(speed);
109
	var $Elem = $JFromIDOrElement( elem );
110
	var $Hover = $JFromIDOrElement( divHover );
111
	var $Target = $JFromIDOrElement( targetContent );
112
113
	var oElemState = GetHoverState( $Elem );
114
115
	if ( !$Target.length || !oElemState.bWantsHover || !oElemState.bReadyForHover || !$J.contains( document, $Elem[0] ) )
116
		return;
117
118
	$Target.siblings().hide();
119
	$Target.show();
120
121
	g_HoverState.target = $Elem[0];
122
123
	var $Toparea = $Target.find( '.hover_top_area' );
124
	if ( params && params.top_area_content )
125
	{
126
		$Toparea.html( params.top_area_content );
127
		$Toparea.show();
128
	}
129
	else if ( $Toparea.length )
130
	{
131
		$Toparea.hide();
132
	}
133
134
	// "show" the hover, but not "visible", letting us do some positioning
135
	$Hover.css( 'visibility', 'hidden' ).show();
136
137
	var $HoverBox = $Hover.find( '.hover_box' );
138
	var $HoverArrowLeft = $Hover.find( '.hover_arrow_left' );
139
	var $HoverArrowRight = $Hover.find( '.hover_arrow_right' );
140
141
	var offset = $Elem.offset();
142
	var nWindowScrollTop = $J(window).scrollTop();
143
	var nWindowScrollLeft = $J(window).scrollLeft();
144
	var nViewportWidth = $J(window).width();
145
	var nViewportHeight = $J(window).height();
146
147
	var nHoverPositionLeft, nHoverPositionTop;
148
149
		var $HoverArrow = $HoverArrowLeft;
150
	var boxRightViewport = ( offset.left - nWindowScrollLeft ) + $Elem.outerWidth() + $HoverBox.width() + 14;
151
	var nSpaceRight = nViewportWidth - boxRightViewport;
152
	var nSpaceLeft = offset.left - $Hover.width();
153
	if( nSpaceLeft < -10 && nSpaceRight < -10 )
154
	{
155
		//no room at all
156
		$Hover.hide().css('visibility','');
157
		return;	//skip showing the hover
158
	}
159
	else if ( nSpaceRight < 14 && nSpaceLeft > nSpaceRight )
160
	{
161
				nHoverPositionLeft = offset.left - $Hover.outerWidth() + 8;
162
		$HoverArrow = $HoverArrowRight;
163
		$HoverArrowLeft.hide();
164
		$HoverArrowRight.show();
165
	}
166
	else
167
	{
168
				nHoverPositionLeft = offset.left + $Elem.outerWidth() - 8;
169
		$HoverArrowLeft.show();
170
		$HoverArrowRight.hide();
171
	}
172
173
	var nTopAdjustment = -13;
174
				if ( $Elem.height() < 63 )
175
		nTopAdjustment =  Math.floor( $Elem.height() ) / 2 - 56;
176
	nHoverPositionTop = offset.top + nTopAdjustment;
177
	$Hover.offset( {top: nHoverPositionTop, left: nHoverPositionLeft} );
178
179
	var nTargetTopViewport = ( offset.top - nWindowScrollTop ) + nTopAdjustment;
180
	if ( nTargetTopViewport + $HoverBox.height() + 8 > nViewportHeight )
181
	{
182
		var nViewportAdjustment = ( $HoverBox.height() + 8 ) - ( nViewportHeight - nTargetTopViewport );
183
184
				nViewportAdjustment = Math.min( $HoverBox.height() - 74, nViewportAdjustment );
185
		var nViewportAdjustedHoverTop = offset.top - nViewportAdjustment;
186
		$Hover.css( 'top', nViewportAdjustedHoverTop + 'px' );
187
188
		$HoverArrow.css( 'top', ( 48 + nHoverPositionTop - nViewportAdjustedHoverTop ) + 'px' );
189
	}
190
	else
191
	{
192
		$HoverArrow.css( 'top', '' );
193
	}
194
195
	$Hover.hide();
196
	$Hover.css( 'visibility', '' );
197
198
	ShowWithFade( $Hover, 10 );
199
200
}
201
    HideGameHover = function( elem, event, divHover )
202
{
203
204
	var $Elem = $JFromIDOrElement( elem );
205
	var $Hover = $JFromIDOrElement( divHover );
206
207
	var oElemState = GetHoverState( $Elem );
208
209
	if ( !$Hover.length )
210
		return;
211
212
	if (!event) var event = window.event;
213
	var reltarget = $J( (event.relatedTarget) ? event.relatedTarget : event.toElement );
214
	if ( reltarget.length && $J.contains( $Elem[0], reltarget[0] ) )
215
		return;
216
217
	if ( oElemState.timer )
218
	{
219
		window.clearTimeout( oElemState.timer );
220
		oElemState.timer = false;
221
	}
222
	oElemState.bWantsHover = false;
223
	oElemState.bReadyForHover = false;
224
225
	HideWithFade( divHover, 20 );
226
227
}
228
})();