Flickr 5 Stars Ratings

By Laurie Poon Last update Jan 21, 2007 — Installed 1,386 times.
//
// Copyright (c) Jan 2007 Laurie Poon. All rights reserved.
//
// ==UserScript==
// @name           Flickr 5 Stars Ratings
// @namespace      http://www.flickr.com
// @description    Add star ratings tags to you photos
// @include        http://www.flickr.com/photos/*
// @include        http://flickr.com/photos/*
// @version 0.1
// ==/UserScript==

function addGlobalStyle(css) {
    var head, style;
    head = document.getElementsByTagName('head')[0];
    if (!head) { return; }
    style = document.createElement('style');
    style.type = 'text/css';
    style.innerHTML = css;
    head.appendChild(style);
}

function getCurrentRating() 
{
    var thetags = document.getElementById("thetags");
    var nodes = thetags.getElementsByTagName("a");
    var exp = new RegExp("^GC[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]");

    for (var i = 0; i < nodes.length; i++) 
    {
		var node = nodes[i];
		if (node.innerHTML.match("1star")) return 1;
		if (node.innerHTML.match("2star")) return 2;
		if (node.innerHTML.match("3star")) return 3;
		if (node.innerHTML.match("4star")) return 4;
		if (node.innerHTML.match("5star")) return 5;
	}
	return 0;
}

function addStarRatings()
{
    if (unsafeWindow.global_photos["" + unsafeWindow.page_photo_id].isOwner == true)
    {

		var tagAdder, newElement;
		tagAdder = document.getElementById('tagadder');
		if (tagAdder) {
			var stars = document.createElement("div");
			var cur = getCurrentRating();
			var wcur = cur * 30;	// Each star is 30 pixels wide
			stars.innerHTML = "<div><br>Rate this photo" +
			  "<ul class='star-rating'>" +
			  "<li class='current-rating' style='width:" + wcur + "px;'>Currently " + cur + "/5 Stars.</li>" +
			  "<li><a href='#' id='onestar' title='Rate this 1 star out of 5' class='one-star'>1</a></li>" +
			  "<li><a href='#' id='twostar' title='Rate this 2 stars out of 5' class='two-stars'>2</a></li>" +
			  "<li><a href='#' id='threestar' title='Rate this 3 stars out of 5' class='three-stars'>3</a></li>" +
			  "<li><a href='#' id='fourstar' title='Rate this 4 stars out of 5' class='four-stars'>4</a></li>" +
			  "<li><a href='#' id='fivestar' title='Rate this 5 stars out of 5' class='five-stars'>5</a></li></ul>" +
			  "</div>";
		    tagAdder.parentNode.insertBefore(stars, tagAdder.nextSibling);

			var obj1star = document.getElementById('onestar');
			obj1star.addEventListener("click", function(evt)
            {
                var objTag = document.getElementById('addtagbox');
				var objForm = document.getElementById('tagadderform');
				objTag.value = '1star'; 
				objForm.submit();
				evt.stopPropagation();
                evt.preventDefault();
            }, true);

			var obj2star = document.getElementById('twostar');
			obj2star.addEventListener("click", function(evt)
            {
                var objTag = document.getElementById('addtagbox');
				var objForm = document.getElementById('tagadderform');
				objTag.value = '2star'; 
				objForm.submit();
				evt.stopPropagation();
                evt.preventDefault();
            }, true);

			var obj3star = document.getElementById('threestar');
			obj3star.addEventListener("click", function(evt)
            {
                var objTag = document.getElementById('addtagbox');
				var objForm = document.getElementById('tagadderform');
				objTag.value = '3star'; 
				objForm.submit();
				evt.stopPropagation();
                evt.preventDefault();
            }, true);

 			var obj4star = document.getElementById('fourstar');
			obj4star.addEventListener("click", function(evt)
            {
                var objTag = document.getElementById('addtagbox');
				var objForm = document.getElementById('tagadderform');
				objTag.value = '4star'; 
				objForm.submit();
				evt.stopPropagation();
                evt.preventDefault();
            }, true);
           
			var obj5star = document.getElementById('fivestar');
			obj5star.addEventListener("click", function(evt)
            {
                var objTag = document.getElementById('addtagbox');
				var objForm = document.getElementById('tagadderform');
				objTag.value = '5star'; 
				objForm.submit();
				evt.stopPropagation();
                evt.preventDefault();
            }, true);

		}      
    }
}

addGlobalStyle('.star-rating{ list-style:none; margin: 0px; padding:0px; width: 150px; height: 30px; position: relative; background: url("data:image/gif;base64, R0lGODlhHgBaAOYAAAB9APf399bW1tCiGGXUZczMzOrGSiOrI+/v76vgq+vBKgCtAP789Pbjn+bm5vfVVkzITPry1QC1AN+zIgClAN7e3oTZhPLZgwC+APnsvwCZANXu1crqyiK/IvXMMeW5Jv755r7ovu/UdNirHvnuyRqrGhm1Ge7NWeb55nTIdCLJIgCMADStNPDGLgDMAELZQvD58O/Wa47Yjg2kDffehPjorujAM/zrsOO3JP788eD54PPNP/312LjmuC6+LteqHMXyxdyvIPbgk/////f99/jddCfQJyaxJlDEUPblqO3DKwCZAIXnhXLVcpbblgepBwjOCPrxz/LPS+e9KNSnGvPRUUzbTPjbbgCEAPnjjCe9J/323O787vPLOO3FNv3568/vz9X01SK3IknKSb3tvTS3NPXYa//mpWHgYezJTavmq/fVV4LcgvzyyXTKdB7MHo3gjffgjeS9OffOQrXwtfjeeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAHAP8ALAAAAAAeAFoAAAf/gEOCg4SDAYeHhYqLigEIjwiJjJOEjg6CDpGUm0MBDpdDn5KcjQgVAYIBFZqkjZ+Eoq2FjqtDj7arqLKdnhVERAICghUOo4yIhwgOtQEFBajLmZHIho7KnxXBmMGXAcHEn9Koh8sVxJC65uZEvI/lxIisi8ruCJOO5Lrt15nJ4ei68FkShMBZgXPTkinL5kxXP3KnBHGbVslSsHT9Ol1jpypXKXOpzumzVAxTyVmxhojUp3GZQ3ktQ2b8KCwUTGsSPTJSVhMeMk+gBJw89mqIUEiQHPQcOi9TJwHqHqkTAI2pIlP2HDiL2ElpAXtY2S2iharC16sHO+n8iEkXgmD2/zANg1lJWaV38AitnXULE0J3xAY9YllocMeHiMopJFz3GsXGn+g2ojb2565UiC4fQ8r4siVykncBNdm5FdmQoUn10mtVlqlLG3TgSk3JE9UhbtxILFa6YmJiRFCUmAFD5crMjfkJeDbECQUKCToVEBrZcKqF6s4JErNgQZlf4bIjtq5ITffuPTZPG/oLRRgybDpIOO9DRojYxQ1N60vGiAsM8y0gwYABLvDccwdwQNB+n/wyhoEUaKDBChQQeF53RygYynggDQEBhBOusIKAFpoARle5BPSaIASAOCEWIw7og2zGPXadOajA0V2EL8KoxYk1dmZbTSrsKKGIALAgkf8AtClTgCBvDPjckSscIEgBmYg1llJDEPEfBkZOqMFuvXV1iQ4ufBmmBihsWCZWQ9CRpgtGgAGGD1MCMZuWV0WEhgtQMEGIBU9o0IRaqTlS0wtWcKFWRFwgAYFEiZoiiKOhBMMNO22qVCkouICDDVc2lYZTKMdZEpgttJEkTkX82FgZZbNY5hmtmukHUK76gTITr9eQVmZtpgS0l2jLsDbsZrWQQMJsy9bq0hAiiEDmsD/xdAkIXngBQqbi0KpQeMuxI4QSSjQgHVThvAqROdXp0kULLUiRg0bXqMMbPpOc4cG/LdRwz3q6MAACD23ckMUD/za8gxlC1JBBBCAwcJ3sP4LwIEULCkyBAw5KNNwwveie8AUmCU2bxAcfTDDBCCNM0ILI9LZwwrcqZaQqOw14jEMQQfxABQ4zN2xGSGupikoGU7T88ghUUPHBv1ecbNRDdU0bRdMfAC30AAOkYbE3v9ZlFjtVcD1B0FGfkFOTXA6xgwIKsLw21HJc2dpdFQyRgwctKDGFx3dPQCYlwW4BMLo24LB2ECentFMtNzQcRw45XPBxEBnsySwqRXiwRgSERGDABBcgaqqlQ9RxBkFwCZKEtUZ9ynd2LB3b6yDlIKUUqGUXNg28Cal6ijW9WROZMfguv4mtk+E6RCAAOw==") top left repeat-x;}');
addGlobalStyle('.star-rating li{ padding:0px; margin:0px; height:30px; width: 30px;		/*\*/ float: left; /* */ }');
addGlobalStyle('.star-rating li a{ display:block; width:30px; height: 30px; line-height:30px; text-decoration: none; text-indent: -9000px; z-index: 20; position: absolute; padding: 0px; overflow:hidden; }');
addGlobalStyle('.star-rating li a:hover{ background: url("data:image/gif;base64, R0lGODlhHgBaAOYAAAB9APf399bW1tCiGGXUZczMzOrGSiOrI+/v76vgq+vBKgCtAP789Pbjn+bm5vfVVkzITPry1QC1AN+zIgClAN7e3oTZhPLZgwC+APnsvwCZANXu1crqyiK/IvXMMeW5Jv755r7ovu/UdNirHvnuyRqrGhm1Ge7NWeb55nTIdCLJIgCMADStNPDGLgDMAELZQvD58O/Wa47Yjg2kDffehPjorujAM/zrsOO3JP788eD54PPNP/312LjmuC6+LteqHMXyxdyvIPbgk/////f99/jddCfQJyaxJlDEUPblqO3DKwCZAIXnhXLVcpbblgepBwjOCPrxz/LPS+e9KNSnGvPRUUzbTPjbbgCEAPnjjCe9J/323O787vPLOO3FNv3568/vz9X01SK3IknKSb3tvTS3NPXYa//mpWHgYezJTavmq/fVV4LcgvzyyXTKdB7MHo3gjffgjeS9OffOQrXwtfjeeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAHAP8ALAAAAAAeAFoAAAf/gEOCg4SDAYeHhYqLigEIjwiJjJOEjg6CDpGUm0MBDpdDn5KcjQgVAYIBFZqkjZ+Eoq2FjqtDj7arqLKdnhVERAICghUOo4yIhwgOtQEFBajLmZHIho7KnxXBmMGXAcHEn9Koh8sVxJC65uZEvI/lxIisi8ruCJOO5Lrt15nJ4ei68FkShMBZgXPTkinL5kxXP3KnBHGbVslSsHT9Ol1jpypXKXOpzumzVAxTyVmxhojUp3GZQ3ktQ2b8KCwUTGsSPTJSVhMeMk+gBJw89mqIUEiQHPQcOi9TJwHqHqkTAI2pIlP2HDiL2ElpAXtY2S2iharC16sHO+n8iEkXgmD2/zANg1lJWaV38AitnXULE0J3xAY9YllocMeHiMopJFz3GsXGn+g2ojb2565UiC4fQ8r4siVykncBNdm5FdmQoUn10mtVlqlLG3TgSk3JE9UhbtxILFa6YmJiRFCUmAFD5crMjfkJeDbECQUKCToVEBrZcKqF6s4JErNgQZlf4bIjtq5ITffuPTZPG/oLRRgybDpIOO9DRojYxQ1N60vGiAsM8y0gwYABLvDccwdwQNB+n/wyhoEUaKDBChQQeF53RygYynggDQEBhBOusIKAFpoARle5BPSaIASAOCEWIw7og2zGPXadOajA0V2EL8KoxYk1dmZbTSrsKKGIALAgkf8AtClTgCBvDPjckSscIEgBmYg1llJDEPEfBkZOqMFuvXV1iQ4ufBmmBihsWCZWQ9CRpgtGgAGGD1MCMZuWV0WEhgtQMEGIBU9o0IRaqTlS0wtWcKFWRFwgAYFEiZoiiKOhBMMNO22qVCkouICDDVc2lYZTKMdZEpgttJEkTkX82FgZZbNY5hmtmukHUK76gTITr9eQVmZtpgS0l2jLsDbsZrWQQMJsy9bq0hAiiEDmsD/xdAkIXngBQqbi0KpQeMuxI4QSSjQgHVThvAqROdXp0kULLUiRg0bXqMMbPpOc4cG/LdRwz3q6MAACD23ckMUD/za8gxlC1JBBBCAwcJ3sP4LwIEULCkyBAw5KNNwwveie8AUmCU2bxAcfTDDBCCNM0ILI9LZwwrcqZaQqOw14jEMQQfxABQ4zN2xGSGupikoGU7T88ghUUPHBv1ecbNRDdU0bRdMfAC30AAOkYbE3v9ZlFjtVcD1B0FGfkFOTXA6xgwIKsLw21HJc2dpdFQyRgwctKDGFx3dPQCYlwW4BMLo24LB2ECentFMtNzQcRw45XPBxEBnsySwqRXiwRgSERGDABBcgaqqlQ9RxBkFwCZKEtUZ9ynd2LB3b6yDlIKUUqGUXNg28Cal6ijW9WROZMfguv4mtk+E6RCAAOw==") left center; z-index: 2; left: 0px; border:none; }');
addGlobalStyle('.star-rating a.one-star{ left: 0px; }');
addGlobalStyle('.star-rating a.one-star:hover{ width:30px; }');
addGlobalStyle('.star-rating a.two-stars{ left:30px; }');
addGlobalStyle('.star-rating a.two-stars:hover{ width: 60px; }');
addGlobalStyle('.star-rating a.three-stars{ left: 60px; }');
addGlobalStyle('.star-rating a.three-stars:hover{ width: 90px; }');
addGlobalStyle('.star-rating a.four-stars{ left: 90px; }');
addGlobalStyle('.star-rating a.four-stars:hover{ width: 120px; }');
addGlobalStyle('.star-rating a.five-stars{ left: 120px; }');
addGlobalStyle('.star-rating a.five-stars:hover{ width: 150px; }');
addGlobalStyle('.star-rating li.current-rating{ background: url("data:image/gif;base64, R0lGODlhHgBaAOYAAAB9APf399bW1tCiGGXUZczMzOrGSiOrI+/v76vgq+vBKgCtAP789Pbjn+bm5vfVVkzITPry1QC1AN+zIgClAN7e3oTZhPLZgwC+APnsvwCZANXu1crqyiK/IvXMMeW5Jv755r7ovu/UdNirHvnuyRqrGhm1Ge7NWeb55nTIdCLJIgCMADStNPDGLgDMAELZQvD58O/Wa47Yjg2kDffehPjorujAM/zrsOO3JP788eD54PPNP/312LjmuC6+LteqHMXyxdyvIPbgk/////f99/jddCfQJyaxJlDEUPblqO3DKwCZAIXnhXLVcpbblgepBwjOCPrxz/LPS+e9KNSnGvPRUUzbTPjbbgCEAPnjjCe9J/323O787vPLOO3FNv3568/vz9X01SK3IknKSb3tvTS3NPXYa//mpWHgYezJTavmq/fVV4LcgvzyyXTKdB7MHo3gjffgjeS9OffOQrXwtfjeeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAHAP8ALAAAAAAeAFoAAAf/gEOCg4SDAYeHhYqLigEIjwiJjJOEjg6CDpGUm0MBDpdDn5KcjQgVAYIBFZqkjZ+Eoq2FjqtDj7arqLKdnhVERAICghUOo4yIhwgOtQEFBajLmZHIho7KnxXBmMGXAcHEn9Koh8sVxJC65uZEvI/lxIisi8ruCJOO5Lrt15nJ4ei68FkShMBZgXPTkinL5kxXP3KnBHGbVslSsHT9Ol1jpypXKXOpzumzVAxTyVmxhojUp3GZQ3ktQ2b8KCwUTGsSPTJSVhMeMk+gBJw89mqIUEiQHPQcOi9TJwHqHqkTAI2pIlP2HDiL2ElpAXtY2S2iharC16sHO+n8iEkXgmD2/zANg1lJWaV38AitnXULE0J3xAY9YllocMeHiMopJFz3GsXGn+g2ojb2565UiC4fQ8r4siVykncBNdm5FdmQoUn10mtVlqlLG3TgSk3JE9UhbtxILFa6YmJiRFCUmAFD5crMjfkJeDbECQUKCToVEBrZcKqF6s4JErNgQZlf4bIjtq5ITffuPTZPG/oLRRgybDpIOO9DRojYxQ1N60vGiAsM8y0gwYABLvDccwdwQNB+n/wyhoEUaKDBChQQeF53RygYynggDQEBhBOusIKAFpoARle5BPSaIASAOCEWIw7og2zGPXadOajA0V2EL8KoxYk1dmZbTSrsKKGIALAgkf8AtClTgCBvDPjckSscIEgBmYg1llJDEPEfBkZOqMFuvXV1iQ4ufBmmBihsWCZWQ9CRpgtGgAGGD1MCMZuWV0WEhgtQMEGIBU9o0IRaqTlS0wtWcKFWRFwgAYFEiZoiiKOhBMMNO22qVCkouICDDVc2lYZTKMdZEpgttJEkTkX82FgZZbNY5hmtmukHUK76gTITr9eQVmZtpgS0l2jLsDbsZrWQQMJsy9bq0hAiiEDmsD/xdAkIXngBQqbi0KpQeMuxI4QSSjQgHVThvAqROdXp0kULLUiRg0bXqMMbPpOc4cG/LdRwz3q6MAACD23ckMUD/za8gxlC1JBBBCAwcJ3sP4LwIEULCkyBAw5KNNwwveie8AUmCU2bxAcfTDDBCCNM0ILI9LZwwrcqZaQqOw14jEMQQfxABQ4zN2xGSGupikoGU7T88ghUUPHBv1ecbNRDdU0bRdMfAC30AAOkYbE3v9ZlFjtVcD1B0FGfkFOTXA6xgwIKsLw21HJc2dpdFQyRgwctKDGFx3dPQCYlwW4BMLo24LB2ECentFMtNzQcRw45XPBxEBnsySwqRXiwRgSERGDABBcgaqqlQ9RxBkFwCZKEtUZ9ynd2LB3b6yDlIKUUqGUXNg28Cal6ijW9WROZMfguv4mtk+E6RCAAOw==") left bottom; position: absolute; height: 30px; display: block; text-indent: -9000px; z-index: 1; }');

addStarRatings();