Count StumbleUpon Likes

By Thlayli Last update Feb 20, 2007 — Installed 1,610 times. Daily Installs: 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3, 0, 0, 0, 1, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 1, 1, 0
// ==UserScript==
// @name           Count StumbleUpon Likes
// @namespace      http://thlayli.detrave.net/countlikes.html
// @description    Adds number of Likes to Prefs and About on StumbleUpon.com
// @include        http://*.stumbleupon.com/about/
// @include        http://*.stumbleupon.com/prefs/*
// @version        1.2
// ==/UserScript==

if(document.location.href.indexOf("prefs") != -1){
	var textareas = unsafeWindow.document.getElementsByTagName("textarea");
	for(i=0;i<textareas.length;i++){
		if(textareas[i].name.indexOf("text") != -1){
			textareas[i].value = textareas[i].value.substr(0,textareas[i].value.length-1);
			areaCount(textareas[i]);
			textareas[i].onkeydown = areaCount;
			textareas[i].onblur = areaCount;
		}
	}
}else{
	rows = document.getElementsByTagName('tr');
	for(i=0;i<rows.length;i++){
		sectionTitle = rows[i].textContent.substr(1,6);
		if(sectionTitle=='Things'&&!music){
			var likes = rows[i].nextSibling;
			// Stumbleupon Likes Linker fix
			if(likes.firstChild.firstChild.host == 'www.google.com'){
				var google = 5;
			}else{
				var google = 4;
			}
			var likesCount = (likes.firstChild.childNodes.length + 1) / google;
			likes.previousSibling.firstChild.firstChild.nextSibling.innerHTML = '<span class="bold">'+likesCount+'</span> Things I like';
		}
		if(sectionTitle==' Music'&&!music){
			var music = rows[i].nextSibling;
			var musicTable = music.firstChild.firstChild.firstChild.firstChild.firstChild;
			if(musicTable.childNodes.length > 0){
				// Stumbleupon Likes Linker fix
				if(musicTable.firstChild.nextSibling.host == 'www.last.fm'){
					var lastfm = 6;
				}else{
					var lastfm = 5;
				}
				var musicCount = musicTable.childNodes.length;
				var musicCol = 1;
			}
			if(musicTable.nextSibling && musicTable.nextSibling.childNodes.length > 0){
				musicCount += musicTable.nextSibling.childNodes.length;
				musicCol++;
			}
			if(musicTable.nextSibling.nextSibling && musicTable.nextSibling.nextSibling.childNodes.length > 0){
				musicCount += musicTable.nextSibling.nextSibling.childNodes.length;
				musicCol++;
			}
			if(musicTable.nextSibling.nextSibling.nextSibling && musicTable.nextSibling.nextSibling.nextSibling.childNodes.length > 0){
				musicCount += musicTable.nextSibling.nextSibling.nextSibling.childNodes.length;
				musicCol++;
			}
			musicCount = (musicCount + musicCol) / lastfm;
			music.previousSibling.firstChild.firstChild.firstChild.firstChild.firstChild.firstChild.nextSibling.nextSibling.nextSibling.innerHTML = '<span class="bold">'+musicCount+'</span> Music';
		}
		if(sectionTitle==' Books'&&!books){
			var books = rows[i].nextSibling;
			var booksTable = books.firstChild.firstChild.firstChild.firstChild.firstChild;
			if(booksTable.childNodes.length > 0){
				// Stumbleupon Likes Linker fix
				if(booksTable.firstChild.nextSibling.host == 'www.amazon.com'){
					var amazon = 6;
				}else{
					var amazon = 5;
				}
				var booksCount = booksTable.childNodes.length;
				var booksCol = 1;
			}
			if(booksTable.nextSibling && booksTable.nextSibling.childNodes.length > 0){
				booksCount += booksTable.nextSibling.childNodes.length;
				booksCol++;
			}
			if(booksTable.nextSibling.nextSibling && booksTable.nextSibling.nextSibling.childNodes.length > 0){
				booksCount += booksTable.nextSibling.nextSibling.childNodes.length;
				booksCol++;
			}
			if(booksTable.nextSibling.nextSibling.nextSibling && booksTable.nextSibling.nextSibling.nextSibling.childNodes.length > 0){
				booksCount += booksTable.nextSibling.nextSibling.nextSibling.childNodes.length;
				booksCol++;
			}
			booksCount = (booksCount + booksCol) / amazon;
			books.previousSibling.firstChild.firstChild.firstChild.firstChild.firstChild.firstChild.nextSibling.nextSibling.nextSibling.innerHTML = '<span class="bold">'+booksCount+'</span> Books';
		}
		if(sectionTitle==' Movie'&&!movies){
			var movies = rows[i].nextSibling;
			var moviesTable = movies.firstChild.firstChild.firstChild.firstChild.firstChild;
			if(moviesTable.childNodes.length > 0){
				// Stumbleupon Likes Linker fix
				if(moviesTable.firstChild.nextSibling.host == 'www.imdb.com'){
					var imdb = 6;
				}else{
					var imdb = 5;
				}
				var moviesCount = moviesTable.childNodes.length;
				var moviesCol = 1;
			}
			if(moviesTable.nextSibling && moviesTable.nextSibling.childNodes.length > 0){
				moviesCount += moviesTable.nextSibling.childNodes.length;
				moviesCol++;
			}
			if(moviesTable.nextSibling.nextSibling && moviesTable.nextSibling.nextSibling.childNodes.length > 0){
				moviesCount += moviesTable.nextSibling.nextSibling.childNodes.length;
				moviesCol++;
			}
			if(moviesTable.nextSibling.nextSibling.nextSibling && moviesTable.nextSibling.nextSibling.nextSibling.childNodes.length > 0){
				moviesCount += moviesTable.nextSibling.nextSibling.nextSibling.childNodes.length;
				moviesCol++;
			}
			moviesCount = (moviesCount + moviesCol) / imdb;
			movies.previousSibling.firstChild.firstChild.firstChild.firstChild.firstChild.firstChild.nextSibling.nextSibling.nextSibling.innerHTML = '<span class="bold">'+moviesCount+'</span> Movies';
		}
		if(sectionTitle.substr(0,3)==' TV'&&!tv){
			var tv = rows[i].nextSibling;
			var tvTable = tv.firstChild.firstChild.firstChild.firstChild.firstChild;
			if(tvTable.childNodes.length > 0){
				// Stumbleupon Likes Linker fix
				if(moviesTable.firstChild.nextSibling.host == 'www.imdb.com'){
					var imdb = 6;
				}else{
					var imdb = 5;
				}			
				var tvCount = tvTable.childNodes.length;
				var tvCol = 1;
			}
			if(tvTable.nextSibling && tvTable.nextSibling.childNodes.length > 0){
				tvCount += tvTable.nextSibling.childNodes.length;
				tvCol++;
			}
			if(tvTable.nextSibling.nextSibling && tvTable.nextSibling.nextSibling.childNodes.length > 0){
				tvCount += tvTable.nextSibling.nextSibling.childNodes.length;
				tvCol++;
			}
			if(tvTable.nextSibling.nextSibling.nextSibling && tvTable.nextSibling.nextSibling.nextSibling.childNodes.length > 0){
				tvCount += tvTable.nextSibling.nextSibling.nextSibling.childNodes.length;
				tvCol++;
			}
			tvCount = (tvCount + tvCol) / imdb;
			tv.previousSibling.firstChild.firstChild.firstChild.firstChild.firstChild.firstChild.nextSibling.nextSibling.nextSibling.innerHTML = '<span class="bold">'+tvCount+'</span> TV';
		}
	}
}

function areaCount(tgt){
	elem = (tgt.target) ? tgt.target : tgt;
	var likeString;
	var lineCount = substrCount("\n",elem.value);
	if(lineCount < 63){
		lineText = "lines";
		if(63 - lineCount == 1)
			var lineText = "line";
		likeString = (63 - lineCount) + " available " + lineText;
	}else{
		if(lineCount == 63){
			likeString = "All 63 lines used";
		}else{
			likeString = '<span style="color: red;">Too many lines used!</span>';
		}
	}
	elem.previousSibling.previousSibling.previousSibling.innerHTML =  likeString;
}

function substrCount(needle,haystack){
	var index = 0;
	var count = 0;
	while(index != -1 && index != haystack.length){
		count++;
		index = haystack.indexOf(needle,index+1);
	}
	return count;
}