Google Code Starred Projects +

By Umakanthan Chandran Last update May 7, 2009 — Installed 27 times. Daily Installs: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0
// ==UserScript==
// @name           Google Code Starred Projects + 
// @namespace      Umakanthan Chandran ( cumakt@gmail.com)
// @description    Manage your starred projects at profile's page
// @include        http://code.google.com/u/*
// @include 	   http://code.google.com/hosting/search?q=*	
// ==/UserScript==

	String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); };
	String.prototype.stripHTML = function () { return this.replace(/(<([^>]+)>)/ig,""); };
	var headTag = document.getElementsByTagName('head')[0].getElementsByTagName('script');
	codesite_token = headTag[0].innerHTML.split("=")[1].replace(/\"/g,'').replace(";","").toString().trim();	
	var urlImageOn = "http://www.gstatic.com/codesite/ph/images/star_on.gif";
	var urlImageOff = "http://www.gstatic.com/codesite/ph/images/star_off.gif";
	if(codesite_token != 'null' && !$('serp')) {
		userArray = location.href.split('com/u')
		user = userArray[1].replace('/','');		
		var classN = document.getElementsByClassName('rowmajor');
		child = classN[1].childNodes;
		star_links = child[1].getElementsByTagName('a');	
		for(i=0;i < star_links.length; i++) {
			var img = document.createElement('img');
			img.style.height = '15px';
			img.style.width = '15px';
			img.style.cursor = 'pointer';
			img.src = urlImageOn;
			img.addEventListener('click',function(){ CS_toggleStar(this, {'scope': 'projects',  'user': '_CURRENT_USER',  'item': this.nextSibling.innerHTML,  'token': codesite_token },  'star_msg',  'Starred (\x3ca href\x3d\x22/u/'+ user +'/\x22\x3eview starred projects\x3c/a\x3e)',  'Star this project'); },false);
			star_links[i].addEventListener('mouseover',function() { getProjectDetails(this); }, false);
			parent = star_links[i].parentNode;
			parent.insertBefore(img,star_links[i]);	
		}		
	}
	 if(codesite_token != 'null' && $('serp')){
	 	if($('gaia')) {
	 		gaia_user = $('gaia').innerHTML.stripHTML().trim().split('|')[0].split('@')[0];	
	 		user = gaia_user;
	 		//user = gaia[0].stripHTML();
	 		//GM_log(user);
		}
	 	className = $('serp').getElementsByClassName('name');
	 	for(i=0;i<className.length;i++){
	 		var img = document.createElement('img');
			img.style.height = '15px';
			img.style.width = '15px';
			img.src = urlImageOff;
			img.style.cursor = 'pointer';
			img.addEventListener('click',function(){
				item = this.parentNode.innerHTML.match(/href=\"\/p\/(.*?)\/\">/)[1]								
				CS_toggleStar(this, {'scope': 'projects',  'user': '_CURRENT_USER',  'item': item,  'token': codesite_token },  'star_msg',  'Starred (\x3ca href\x3d\x22/u/'+ user +'/\x22\x3eview starred projects\x3c/a\x3e)',  'Star this project');
			},false);
			 className[i].appendChild(img);
		}
	 }	
//pattern = /<div id="psum">(.*?)<\/div>/;
pattern = /<a id=\"project_summary_link\" (.*?)<\/a>/;

function getProjectDetails(thisPtr){
	//thisPtr.title = "Loading..."
	GM_xmlhttpRequest({
    		method: 'GET',
    		url: thisPtr.href,
    		headers: {
        		'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
        		'Accept': 'application/atom+xml,application/xml,text/xml',
    		},
    		onload: function(responseDetails) {    			    
    				resText = responseDetails.responseText.toString();    				    				
    				thisPtr.title = resText.match(pattern)[0].stripHTML();  
    			}
		});
	
}

//Original code by Google (COPYRIGHTED (c)Google)
var XH_ieProgId_;XH_XmlHttpInit_();function CS_toggleStar(el$703,args$704,star_msg_id$705,star_on_msg$706,star_off_msg$707){var starred$708=el$703.src.indexOf("star_off.gif")!=-1?1:0;el$703.src=starred$708?"http://www.gstatic.com/codesite/ph/images/star_on.gif":"http://www.gstatic.com/codesite/ph/images/star_off.gif";var star_msg_el$709=document.getElementById(star_msg_id$705);if(star_msg_el$709)star_msg_el$709.innerHTML=starred$708?star_on_msg$706:star_off_msg$707;CS_star={on_msg:star_on_msg$706,off_msg:star_off_msg$707,img_el:el$703,
msg_el:star_msg_el$709};args$704.starred=starred$708;CS_setStar(args$704)}function CS_setStar(args$710){CS_starXmlHttp=XH_ieProgId_?new ActiveXObject(XH_ieProgId_):new XMLHttpRequest;var setStarURL$711="/hosting/stars.do",data$712="";for(var i$713 in args$710)data$712+=i$713+"="+encodeURIComponent(args$710[i$713])+"&";XH_XmlHttpPOST(CS_starXmlHttp,setStarURL$711,data$712,CS_setStarCallback)}
function XH_XmlHttpInit_(){var XH_ACTIVE_X_IDENTS$581=["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];if(typeof XMLHttpRequest=="undefined"&&typeof ActiveXObject!="undefined"){var i$582=0;for(;i$582<XH_ACTIVE_X_IDENTS$581.length;i$582++){var candidate$583=XH_ACTIVE_X_IDENTS$581[i$582];try{new ActiveXObject(candidate$583);XH_ieProgId_=candidate$583;break}catch(e$584){}}if(!XH_ieProgId_)throw Error("Could not create ActiveXObject. ActiveX might be disabled, or MSXML might not be installed.");}}
function XH_XmlHttpPOST(xmlHttp$588,url$589,data$590,handler$591){xmlHttp$588.open("POST",url$589,true);xmlHttp$588.onreadystatechange=handler$591;xmlHttp$588.setRequestHeader("Content-Type","application/x-www-form-urlencoded");xmlHttp$588.setRequestHeader("Content-Length",data$590.length);XH_XmlHttpSend(xmlHttp$588,data$590)}
function CS_setStarCallback(){CS_starXmlHttp.readyState==4&&CS_starXmlHttp.status==200&&CS_gotSetStar(CS_starXmlHttp.responseText)}
function XH_XmlHttpSend(xmlHttp$599,data$600){try{xmlHttp$599.send(data$600)}catch(e$601){log("XMLHttpSend failed "+e$601.toString()+"<br>"+e$601.stack);throw e$601;}};
function CS_gotSetStar(responseText$714){try{var args$716=eval("_d="+responseText$714),starred$717=args$716.starred;CS_star.img_el.src=starred$717?"http://www.gstatic.com/codesite/ph/images/star_on.gif":"http://www.gstatic.com/codesite/ph/images/star_off.gif";if(CS_star.msg_el)CS_star.msg_el.innerHTML=starred$717?CS_star.on_msg:CS_star.off_msg}catch(e$720){return null}};

function $(id) {
	return document.getElementById(id);	
}