// ==UserScript==// @name           PT Browse// @namespace      http://hxv.xaa.pl/// @description    Dodaje wyniki z kolejnej strony po zjechaniu na dol witryny// @match          http://polishtracker.org*/browse.php*// ==/UserScript==//ladowanie jQuery - znalezione na http://erikvold.com/blog/index.cfm/2010/6/14/using-jquery-with-a-user-scriptfunction addJQuery(callback){var script=document.createElement("script");script.setAttribute("src","http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js");script.addEventListener('load',function(){var script=document.createElement("script");script.textContent="("+callback.toString()+")();";document.body.appendChild(script);},false);document.body.appendChild(script);}addJQuery(main);//@todo - poprawic get() na each()//@todo - ukrywac jakos strony w listerze / zmieniac na odnosniki do #function main(){	var params = ''; //parametry wyszukiwania	var page = 0; //numer strony z wynikami	var loading = false; //juz sie laduje?	$('document').ready(function(){		paramki = $('body').find('form[name=szukajka] input:checked').get(); //pobiera zazaczone checkboxy...		for( i=0; i<paramki.length; i++ ){			params += paramki[i].name+'=1&'; //...i dopisuje je do URL'a		}		inForm = ['search','namedesc','subtype','movprod','movlang','polish','scene','fribi']; //dodatkowe pola w formularzu		for( i=0; i<inForm.length; i++ ){			if( $('[name='+inForm[i]+']').get()[0].nodeName.toLowerCase() == 'select' ) { //<select> trzeba obsluzyc inaczej...				s = $('[name='+inForm[i]+']').get()[0].selectedIndex;				val = $('[name='+inForm[i]+']').get()[0][s].value;			}else{ //...niz <input>				val = $('input[name='+inForm[i]+']').get()[0].value;			}			params += inForm[i]+'='+val+'&';		}		if( pageInUrl = document.location.href.match(/page=([0-9]+)/) ) //jesli w URL jest juz numer strony...			page = pageInUrl[1]; //..to od niej bedziemy wczytywac		//kilka dodatkowych parametrow odczytywanych z URL'a ktore wypada przekazac		if( document.location.href.match(/[\?&]all=1/) )			params += 'all=1&';		if( find = document.location.href.match(/[\?&]find=([^&]+)/) ) //@todo - moze byc problem, jesli szukamy czegos z "&" w nazwie			params += 'find='+find[1]+'&';		if( tns = document.location.href.match(/[\?&]tns=([a-z]+)/) )			params += 'tns='+tns[1]+'&';		if( stype = document.location.href.match(/[\?&]stype=([a-z0-9]+)/) )			params += 'stype='+stype[1]+'&';		if( sort = document.location.href.match(/[\?&]sort=([a-z0-9]+)/) )			params += 'sort='+sort[1]+'&';		if( d = document.location.href.match(/[\?&]d=([A-Z]+)/) )			params += 'd='+d[1]+'&';		if( document.location.href.match(/[\?&]top=[0-9]/) ) //przy przegladaniu najczesciej pobieranych nie mozna zmieniac strony			loading = true;		checkTop();	});	function checkTop(){		toBottom = $('body').height() - $(window).height() - $('body').scrollTop(); //ile pozostalo do konca strony		if( toBottom <= $(window).height()*1.5 ) {			if( !loading ){ //nie bedzie generowac paru zapytan naraz				loading = true;				page++;				$.ajax({					url: 'browse.php?' + params + 'page=' + page,					success: function(data){						if( !data.match(/Error in line 1006/) ){ //sa jeszcze jakies wyniki							loading = false;							loadedItems = $(data).find('.rowfxa,.rowfxb').length; //ilosc dodanych pozycji							perPage = 50; //ilosc pozycji na stronie							if( perPage = data.match(/<b>1&nbsp;-&nbsp;([0-9]+)<\/b>/) )								perPage = parseInt( perPage[1] );							$('body').find('.rowfxa').parents('table[width*=800]').append(								'<tr><td colspan="8" class="colhead" style="text-align:center;">'+								'Strona '+(page+1)+' ('+(perPage*page+1)+' - '+(perPage*page+loadedItems)+')' +								'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#topsite" class="colheadlink">[top]</a>'+								'</td></tr>'							); //dopisujemy do tabelki wiersz z numerem strony...							//table[width=800] jest niezbedne, zeby nie bylo problemow przy wlaczonej tabelce z reseedem							$('body').find('.rowfxa').parents('table[width*=800]').append( $(data).find('.rowfxa,.rowfxb') ); //...i doklejamy nowe wyniki						}					},					error: function(){ loading = false; } //w przypadku bledu bedzie probowac ponownie				});			}		}		window.setTimeout( checkTop, 500 ); //sprawdzanie co 0,5 sec	}}