// ==UserScript==// @name           BTGigs.info - CAPTCHA Reader// @description    Automatycznie przepisuje kod captcha wymagany do logowania// @include        http://btgigs.info/login.php// ==/UserScript==function readImg( image ) {	var letters = new Array();	for( i=0; i<=100; i++ ){		letters[i] = new Array(); //little lame...	}	letters[21][18] = "r";	letters[22][19] = "z";	letters[23][22] = "i";	letters[23][23] = "l";	letters[24][18] = "c";	letters[26][23] = "t";	//letters[26][20] = "x"; //sprawdzanie reczne	letters[26][20] = "v"; //sprawdzanie reczne	letters[28][20] = "o";	letters[30][16] = "u";	letters[30][21] = "s";	letters[30][25] = "f";	letters[30][20] = "j";	letters[30][19] = "n";	letters[31][23] = "e";	letters[33][20] = "a";	letters[34][30] = "k";	letters[36][18] = "q";	letters[36][28] = "p";	letters[36][25] = "h";	letters[38][25] = "w";	letters[38][18] = "d";	letters[38][30] = "b";	letters[39][22] = "y";	letters[41][28] = "m";	letters[42][33] = "g";	var canvas = document.createElement( "canvas" );	var cont   = canvas.getContext( "2d" ); 	var width  = image.width;	var height = image.height;	canvas.width  = width;	canvas.height = height;	cont.drawImage( image, 0, 0 );	var minX = 130;	var img = cont.getImageData( 0, 0, width, height );	for( x=0; x<img.width; x++ ) {		for( y=0; y<img.height; y++ ) {			index = (y*4)*img.width+(x*4);			red   = img.data[index];			if( red>=252 )				if( x < minX ) {					minX = x;					break;				}		}	}	var orgMinX = minX;	var correction = 0;	while( correction < 4 ) {		var pix = [0,0,0,0,0,0];		var pixR = [0,0,0,0,0,0];		var pixX = [0,0,0,0,0,0];		for( pos=0; pos<=5; pos++ ) {			for( y=0; y<img.height; y++ ) {				for( x=0; x<10; x++ ) {					index = (y*4)*img.width+((minX+x)*4);					col = img.data[index];					if( col >= 252 ) {						pix[pos]++;						if( x<6 )							pixR[pos]++;					}				}			}			for( i=0; i<2; i++ ) {				index = (18*4)*img.width+((minX+i)*4);				pixX[pos] = img.data[index];				if( pixX[pos] >= 252 ) {					break;				}			}			minX += 10;		}		var ret = '';		for( i=0; i<=5; i++ ){			letter = letters[pix[i]][pixR[i]];			if( typeof letter == 'undefined' ) {				correction++;				minX = orgMinX - correction;				break;			}			if( letter == 'v' && pixX[i] >= 252 )				letter = 'x';			ret += letter;		}		if( ret.length < 6 )			continue;		break;	}	return ret;}var readed = false;function main(){	var cap = null;	imgs = document.getElementsByTagName('img');	for( i=0; i<imgs.length; i++ ){		if( imgs[i].src.match(/captcha\.php/) ){			cap = imgs[i];			break;		}	}	if( cap != null ){		readed = true;		var code = readImg( cap );		document.getElementById('captcha').value = code;	}}function recheck(){	main();	if( !readed )		window.setTimeout( recheck, 500 );}recheck();