dev_star_com

keep an eye on selected comments!

// ==UserScript==
// @name           dev_star_com
// @namespace      dev_star_com
// @description    keep an eye on selected comments!
// @include        http://*.deviantart.com/*
// @version        1.38
// @grant 		   GM_registerMenuCommand
// @grant 		   GM_deleteValue
// @grant 		   GM_getValue
// @grant 		   GM_setValue
// ==/UserScript==

// if(navigator.appName=="Opera"){
	// var storage=window.opera.scriptStorage;
	// if(storage){
		// GM_setValue=function(Name, Wert) {
			// storage.setItem(Name,Wert);
			// };
		// GM_getValue=function(Name) {
			// return storage.getItem(Name);
			// }
	// }else{
		// var hint = document.createElement('div');
		// hint.setAttribute('style',"font:10pt Verdana,Arial,Helvetica,sans-serif!important;background-color:#FFF;left:"+ ((window.innerWidth - 600)/2 - 20) +"px;top:"+ ((window.innerHeight - 150)/2 - 20) +"px;width:600px;height:150px;padding:10px;border:1px double black;position:absolute;z-index:999;");
		// hint.id="devhint";
		// hint.innerHTML="If you want to use this script, you have to allow Script-Storage!<br />ScriptStorage is a way to save data within opera that is only available to the userscript that saved it<br />To enable it, please visit <a href='opera:config#PersistentStorage|UserJSStorageQuota'>here</a> and insert a bigger number than 0! (depends on how many comments you would like to save. a good value is about 5000)<br /><p style='text-align:center' ><a style='cursor:pointer;' onclick='document.body.removeChild(document.getElementById(\"devhint\"));'>Close</a></p>";
		// document.body.appendChild(hint);	
	// }	
// }

var favimg="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAWCAYAAAArdgcFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw%2FeHBhY2tldCBiZWdpbj0i77u%2FIiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8%2BIDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjFBQjg0MUQwQUQzMTFFMDlGNEJBQTYxODAyODQ0Q0MiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjFBQjg0MUUwQUQzMTFFMDlGNEJBQTYxODAyODQ0Q0MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2MUFCODQxQjBBRDMxMUUwOUY0QkFBNjE4MDI4NDRDQyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo2MUFCODQxQzBBRDMxMUUwOUY0QkFBNjE4MDI4NDRDQyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI%2FPsMpo20AAARhSURBVHjapFVbTxtHFD4zu%2Btdr23WNhhjG2QMIdTQUolIuajqA2qrJFKlKFJaNVUfKvUhvyB9qPLYp%2F6HPkSqqqip1ItUKRFPSIFWpEASCKSUSx0qIOAbNl6vd3dmOmNvm5JWgJSRj3Z9Lt85882cs3Lv6VHo2H4GR62edPsn2Wz8xtLSs883coUvj%2FLPd8UBwzGWEWuLBwLy1XRqLy2eRiwUP04cPkYFyAj6PuxN%2BzMfXGasN61nxH%2Bhf2nwyG6%2BIxiQL118S82EAhRdfFvJBAPKJaF%2FafBYxH8llVASo9kCACEwOlSEVFJJtoe1K0fFyocZz715Ypi57rXzY2pKlU0ACqAqAOfHtGR1v%2BMahfjE9NTa4lHgUS4DGKP2SFQ%2FaRj%2BXstykoi4g5lud%2FDMsOUDyriLEApnR%2Fb02Qe%2BV9Y30NfJlLEcDKprhUJtu1Q0lyllfIvwO5ci4lcRX%2BjW7qiq1JlORx3Or6875dcMQ4ZktNzTZeQ0VbG9Gjg4YoD4UVqOD21X0vXNQmSjXLbhz03L2q%2B5du6PktJouDt3N%2BwLonJFxvVgts%2Bf%2Bfh9FlIViwEtAGMMAS1xMwd2vdPhwEA5NxxdlWqQjq76e2LhkwwjrtJ4Qhlu3rIri781OIeSIsDR7IZ9vVqtfOEj26evvqtIqs8rVGLeCy9V0IIEMAaGCc8hbHVgDhfMoO5QuPU9dX%2F5VV5YKfk%2F5cFICqcSrApyuVKDJ2bZHtqvkK5sL8Yypq0qqWBDVEyafDMOyhht7YyrGWFg2Rz4B%2BZO3MczC3n9Rh5pD7mz1QTnL66F5ULVREtm2RkqFEl4ZAD5moWzJkIzUTMHbWYToEjsxnIJ3PwW9icf4IePC4HPypI2wx32uRABLmYLM4NBhyfI75bYAqmzQdtyIiP9TG3SwUS1rEkN8xJxJRL623egOjWvTE9vBq7XfNojAczxKMd73kRCIQx1XZ99tE5%2FatgqA9KiRVAhGojwpyiYcFpcToeQuqOSuWV2t6Gpi38DH7jnYoJ5SxjMuKFGTySZRjk4ETdE%2FLB4tDinghZMmgGpGPJHdMXYA6iJ%2BH9h%2FbdDz2ZjyF5pjLQpFSBOq3H%2BaR%2BJAsWt%2B97cDV9hv8UCWmj4WO1fXdmKGz4IhHRen6CF38KnuwBTC4jOr8ulV%2FtI5MxrFCc6WrtvC1EucmTYcroeO8rmoeCY0b6QjsOpCEXlKoV785I1Pidt7VSl1TrSZla3rVOTC27%2F2KiTeGOE%2BBMRigN%2BCFct1s%2FDDwVHioQGOg2I%2FvgzakzMK1tFU17bsvTbOdDHub0BEFTTJfOdvUnzvYk5t%2B%2Fc6yTaEUbt%2BT0Y4PZ7HoP%2FD44kVDZrJpt6Iq%2FvkuBX9y3tO64Xc0AcmDhFKcf0b3J1ffyUz7o8vVj9SJJqEZCC5VYrPwcXg%2BsAOJcQl04B4oFWWgMG6AvfATEk2sT3xEu6I47ssMpbAwNgy3u3vUD2gh9tUQRFrxuR53vA7y8BBgAmTyJY%2F3idRQAAAABJRU5ErkJggg%3D%3D";
var notfavimg="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAWCAYAAAArdgcFAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAOASURBVEhLpZVJSJtBFMeT2NLS0gqFttD2ZIOixQ3FqDWuuFVxibig4pIiNiJSMQH14K5xN64Igoh46qE99SIKuSiCh8ajhSBpjz3YVDEW9Zv%2B%2Fx%2BJBNuagMKfycz33m%2FevHnzDFD4%2BZecnPw2NTX1Y2Bg4LHD4fjip5tvM41G8zQ7O3ujsbFR4si5by%2F%2FLJSIuLWystI%2BMzNzUVVVZU9JSWmFq9I%2F92us1Gr145ycHGt%2Ff7%2B0uLgo9fX1SZxz%2FcbwuLg4Q0VFxT6ilhYWFiSOmH%2BNjY013AheWlr6SqfT2Xp6eo7n5%2BdlONXd3X3M9eLi4jCfG4SFhT0KDg7WhIaGvkGk79PT0y1JSUkfSkpK9urr60%2Fn5uYkwin%2BpriO7zbaZWZmDtOP%2FuSQ59lUVVRUtF5WVmZraWnZNZlMe8PDw0zDPqI8mZ2dvQTyt5cENjuh3dDQ0L7RaNxrbm7exWlthYWF64CrFLiYOwUFBdsGg8G5uroqra2tXSwvL1NypMyxt6anp%2BU5RoETiKWlJVkrKysCPqKhocGZn5%2B%2FTa4iMjLybnR09GuU21Ztbe3Z5OTkJYwgL5hksVjkOcepqSlBwV5MTEwInFagTM%2Fw2LbII1eB%2FARAgREREen4sFNTU3MGYxngLYAIlMXvBF4FI%2F875JBHrpz3qxsggqPx8fFLGE%2FjEdfdEhiF2WwW5eXlR%2F8Ee5WSKjw8%2FCE2wgNMsSJFPz1ARuqBjo6OSm4JjAIn%2FYWUbqBSNPSXL%2FI%2Ff6qoqKgHISEhprq6ukNCuQHBY2NjMnRkZERCtBJzTFVXVx%2FSnn7XgS9ThJo1t7W1uTxADxQwGTw4OEgJqqmp6RQXOOATTDpScgsX%2Bxn17mKUFKEU6lkGDwwMUILC23DFx8d%2F8guu1Wqf44VaOzs7XYySam9vl3D8c7TbH7jsc2ws9fb2CgqPx5WWlmZFUM98tgLcujY3N9cG6GlXV5ek1%2BtPcGF2RLeOPm6G1gGyY7OTjo4OgT7zG12SbUDrC66Eox5P%2BBt6hxMnOEhMTNyMiYl5h0t7iWp4wZHzhISETWx6gJM40cS%2BI5V6Xz1eBQddXl6eIysry4aNjISxEfE58z44cs51AI0ZGRk22DrwTecr70rWKqQGIATjE%2FkZ%2F127Kq7zu9tO7a7x6%2F874ci3g4KC7qN13mOk1xyVKbxFO9rT72rO%2FwAJ2DoMsxrvMwAAAABJRU5ErkJggg%3D%3D";

var favmessid=new Array();
var favmessparam=new Array();
var topclick=false;
var onc=0;

init();
function resets(){
	if(GM_getValue("dev_star_com_username_starid")){
		favmessid=GM_getValue("dev_star_com_username_starid").split(String.fromCharCode(13));
		for(var i in favmessid){
			GM_deleteValue("star_"+favmessid[i]);
		}
		GM_deleteValue("dev_star_com_username_starid");
		GM_deleteValue("dev_star_com_username_starpar");
		favmessid="";
		init();
	}
}
function init(){
	GM_registerMenuCommand("reset dev_star_com", resets,"r");
	favbutinsert();
	if(document.getElementsByClassName("page2")[0]){//Message-Center-Pages
		var cont = document.getElementsByClassName("page2")[0];
		var clickbut=document.createElement("a");
		clickbut.className="f";
		clickbut.id="def_star_com_menu";
		clickbut.setAttribute("style","cursor: pointer;");
		clickbut.innerHTML="<i class='icon i19'></i><span class='ttext'>Starred Comments</span>";
		
		// var notelink=document.getElementsByClassName("page2")[0].getElementsByClassName("f");
		// for(var lin in notelink){
			// if(notelink[lin].getAttribute("mcuid")=="notes"){notelink=notelink[lin];break;}
		// }		
		notelink=document.getElementsByClassName("messages-folder-zone")[0];
		cont.insertBefore(clickbut,notelink.nextSibling);

		clickbut.addEventListener('click',anzeige,false);
		cont.addEventListener('click',raumer,false);
		// var $=unsafeWindow.jQuery,holder,query,offset,fPage,pPage,lPage;
		// $("#overhead .oh-l").click(raumer);
		document.getElementById("overhead").addEventListener('click',function(){topclick=true;raumer();},false);
		
	}
	if(location.href.match(/.*#view=starrCom.*/)){anzeige();}
}

function favbutinsert(){	
	if(!(location.href.match(/.*?\.deviantart\.com(\/#\/.*)?/)||location.href.match(/.*?\.deviantart\.com\/art\/.*/)||location.href.match(/.*?\.deviantart\.com\/gallery\/.*/))){return;}
	
	var arr=document.getElementsByClassName('cc-meta');
	if(location.href.match(/.*?\.deviantart\.com(\/#\/.*)?/)&&onc==0){onc=1;setTimeout(favbutinsert,2000);return;}
	if(arr[0]){ //page contains comments
		if(GM_getValue("dev_star_com_username_starid")){favmessid=GM_getValue("dev_star_com_username_starid").split(String.fromCharCode(13));}
		for(var i in arr){
			if(arr[i].tagName=="DIV"){
				var favbut = document.createElement("img");
				favbut.className="dev_favbut";
				var gmid=arr[i].parentNode.parentNode.parentNode.parentNode.getAttribute("gmi-commentid")
				if(favmessid.indexOf(gmid)==-1){
					favbut.src=notfavimg;
					favbut.setAttribute("akt","1");
				}else{
					favbut.src=favimg;
					favbut.setAttribute("akt","0");
				}
				
				favbut.setAttribute("style","position: absolute;right: 70px;");
				arr[i].appendChild(favbut);
				favbut.addEventListener('click',umschalt,false);
			}
		}
	}else{
		if(onc<10){
			onc++;
			setTimeout(favbutinsert,2000);
		}	
	}
}


function raumer(){
		var aktiv=document.getElementsByClassName("f selected");
		if(typeof aktiv[0] == "undefined" || aktiv[0].id!="def_star_com_menu" || topclick){
			topclick=false;
			var inh=document.getElementsByClassName("mczone dev_star_com");
			if(inh.length==0){return;}
			inh[0].parentNode.removeChild(inh[0]);
		}
		
}

function parget(obj){
	var ausgabe=new Array();
	var parname=new Array("gmi-splitid","gmi-private","gmi-typeid","gmi-itemid");
	for(var i in parname){
		ausgabe.push(obj.getAttribute(parname[i]));
	}
	return ausgabe.join(String.fromCharCode(12));
}
function parpush(obj,idd){
	var parname=new Array("gmi-splitid","gmi-private","gmi-typeid","gmi-itemid");
	for(var i in parname){
		obj.setAttribute(parname[i],favmessparam[idd].split(String.fromCharCode(12))[i]);
	}
}

function umschalt(){
	if(this.getAttribute("akt")=="1"){
		this.setAttribute("akt","0");
		this.src=favimg;
		if(GM_getValue("dev_star_com_username_starid")){favmessid=GM_getValue("dev_star_com_username_starid").split(String.fromCharCode(13));}
		if(GM_getValue("dev_star_com_username_starpar")){favmessparam=GM_getValue("dev_star_com_username_starpar").split(String.fromCharCode(13));}
		var gmi_id=this.parentNode.parentNode.parentNode.parentNode.parentNode.getAttribute("gmi-commentid");
		favmessid.push(gmi_id);	
		favmessparam.push(parget(this.parentNode.parentNode.parentNode.parentNode.parentNode));
		GM_setValue("star_"+gmi_id,this.parentNode.parentNode.parentNode.parentNode.parentNode.innerHTML);
		GM_setValue("dev_star_com_username_starid",favmessid.join(String.fromCharCode(13)))
		GM_setValue("dev_star_com_username_starpar",favmessparam.join(String.fromCharCode(13)))
	}else{
		this.setAttribute("akt","1");this.src=notfavimg;
		var gmi_id=this.parentNode.parentNode.parentNode.parentNode.parentNode.getAttribute("gmi-commentid")
		if(GM_getValue("dev_star_com_username_starid")){favmessid=GM_getValue("dev_star_com_username_starid").split(String.fromCharCode(13));}
		if(GM_getValue("dev_star_com_username_starpar")){favmessparam=GM_getValue("dev_star_com_username_starpar").split(String.fromCharCode(13));}
		favmessparam.splice(favmessid.indexOf(gmi_id),1);
		favmessid.splice(favmessid.indexOf(gmi_id),1);		
		GM_setValue("star_"+gmi_id,"");
		GM_setValue("dev_star_com_username_starid",favmessid.join(String.fromCharCode(13)))
		GM_setValue("dev_star_com_username_starpar",favmessparam.join(String.fromCharCode(13)))
	}
}
function anzeige(){
	var offset=0;
	var patt=/.*deviantart\.com\/notifications\/.*#view=starrCom.*-0*(\d+).*/;
	if(location.href.match(patt)){offset=parseInt(location.href.match(patt)[1]);}
	if(GM_getValue("dev_star_com_username_starid")){favmessid=GM_getValue("dev_star_com_username_starid").split(String.fromCharCode(13));}
	if(GM_getValue("dev_star_com_username_starpar")){favmessparam=GM_getValue("dev_star_com_username_starpar").split(String.fromCharCode(13));}
	var aktiv=document.getElementsByClassName("f selected");
	if(aktiv[0]){aktiv[0].className="f";}
	document.getElementById("def_star_com_menu").className="f selected";
	var inh=document.getElementsByClassName("messages-right")[0];
	inh.innerHTML="";
	var divcont=document.createElement("div");
	divcont.className="mczone dev_star_com";
	divcont.innerHTML="<h2 class='mczone-title'>"+ favmessid.length + " starred Comments</h2>";
	inh.appendChild(divcont);		
	
	for(var i=offset;i<favmessid.length&&i<(10+offset);i++){
		var favbut = document.createElement("div");
		favbut.className="ccomment ch";		
		favbut.setAttribute("gmi-commentid",favmessid[i]);
		favbut.setAttribute("name","gmi-CComment");
		favbut.setAttribute("data-gmiclass","CComment");
		parpush(favbut,i);
		favbut.innerHTML=GM_getValue("star_"+favmessid[i]);
		divcont.appendChild(favbut);
		var interfavimg=document.getElementsByClassName("dev_favbut");
		interfavimg[interfavimg.length-1].addEventListener('click',umschalt,false);
	}
	
	var bbtext="<div class='pagination'><ul class='pages'><li class='prev'><a class='";
	if(offset==0){bbtext+='disabled';}else{bbtext+='away';}
	bbtext+="' id='dev_star_com_prev'>Previous</a></li><li class='next'><a class='";
	if(offset+10>=favmessid.length){bbtext+='disabled';}else{bbtext+='away';}
	bbtext+="' id='dev_star_com_next'>Next</a></li></ul></div>";
		
	var navi=document.createElement("div");
	navi.innerHTML=bbtext;
	navi.className="pagination-wrapper";
	divcont.appendChild(navi);
	
	if(!location.href.match(/#view=starrCom/)){location.href=location.href.replace(/#.*/,"")+"#view=starrCom-0";}
	
	if(offset!=0){
		document.getElementById("dev_star_com_prev").addEventListener('click', function(){
			location.href=location.href.replace(/#.*/,"")+"#view=starrCom-"+(offset-10);	
			anzeige();
		});
	}
	if(offset+10<favmessid.length){	
		document.getElementById("dev_star_com_next").addEventListener('click', function(){
			location.href=location.href.replace(/#.*/,"")+"#view=starrCom-"+(offset+10);		
			anzeige();
		});	
	}
	
}