Enriching yahoo search

By Prem Nawaz Khan Last update Dec 13, 2006 — Installed 344 times.
// ==UserScript==
// @name          Enriching yahoo search
// @version	  6.1
// @description    To display the serach result page in popup and option to bookmark teh same from serach page along with flickr images
// @include       http://search.yahoo.com/*
// @namespace	  prem nawaz khan & smitha s
// ==/UserScript==

   var form = document.forms.namedItem("s");
   if(typeof form=='undefined')  return;
   var input = form.elements.namedItem("yschsp");
   var url='http://www.flickr.com/search/?q='+input.value+'&w=all&s=int';

 	
	var allLinks, thisLink;
	allLinks = document.evaluate("//a[@class='yschttl']",document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
	for (var i = 0; i < allLinks.snapshotLength; i++)
	{
		thisLink = allLinks.snapshotItem(i);

		/*smitha*/
		
		//Get the url starting afetr teh double star 
		var href=thisLink.getAttribute("href");
		
		var j = href.indexOf('*http');
			if (j != -1)
      			href = decodeURIComponent(href.substring(j+1));
				

		// To add to bookmark and strip of the html elements from the text to be added to tile of bookmark
		var bookmarktxt=stripHTML(thisLink.innerHTML);
		var bookmarkurl="javascript:window.sidebar.addPanel('"+bookmarktxt+"','"+ href+"',\"\")";
		
		//Create a link that adds to bookmark
		var bookmark=document.createElement('a');
		bookmark.setAttribute('href',bookmarkurl);
		
		
		var bookmarktxt=document.createElement('img');
		bookmarktxt.src="http://urology.jhu.edu/img/bookmarkIcon.gif";
		
		bookmark.appendChild(bookmarktxt);
		bookmark.style.paddingLeft = "1em";
		bookmark.style.paddingRight = "1em";
		
		thisLink.parentNode.insertBefore(bookmark,thisLink.nextSibling);
		
				
		thisLink.addEventListener("mouseover", popup, false);
		//thisLink.addEventListener("mouseout", removepopup, false);
		
	}
	
		
   GM_xmlhttpRequest({
   method: 'GET',
   url: url,
   headers: {'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey/0.3',
   },
     onload: function(responseDetails)
     {

           var text=responseDetails.responseText;
           storeResponse(text);
     }
   });
   
	function stripHTML(txt){
	var re= /<\S[^><]*>/g
	
	var txt=txt.replace(re, "")
	return(txt);
  }
  
  function removepopup()
  {
    try
		{
		var popdiv=getElementsById('testcheck');

		for(var i=0;i<popdiv.length;i++)
		{
		var popnode=popdiv[i];
		var parent=popnode.parentNode;
		parent.removeChild(popnode);
		}

		}
		catch(e)
		{

		}

  }
	
     function popup()
     {
		var href=this.getAttribute("href");
		var popuphead=stripHTML(this.innerHTML);
		var node=this;
		var j = href.indexOf('*http');
			if (j != -1)
      			href = decodeURIComponent(href.substring(j+1));
       
	    
	   try
		{
		var popdiv=getElementsById('testcheck');
		
		for(var i=0;i<popdiv.length;i++)
		{
		var popnode=popdiv[i];
		var parent=popnode.parentNode;
		parent.removeChild(popnode);
		}
			
		}
		catch(e)
		{

		}
		
		  //Div created for teh popup
		  var divmajor=document.createElement('div');
		  divmajor.id="testcheck";
		  divmajor.setAttribute("resizable","yes");
      divmajor.style.height='350px';
		  divmajor.style.width='700px';

		  //Created the anchor tag for closing teh div
		  var closejs="javascript:((document.getElementById('testcheck')).parentNode).removeChild(document.getElementById('testcheck'))";

		  document.styleSheets[0].insertRule("#closediv {position:absolute;font-weight:bold;text-align:left; }", 0);
		  var closediv=document.createElement('span');
		  closediv.id='closediv';
		  var closenote=document.createTextNode(popuphead);
		  closediv.appendChild(closenote);
		  divmajor.appendChild(closediv);	
			
		 var closespan=document.createElement('span');	
		 document.styleSheets[0].insertRule("#closespan {text-align:right; }", 0);
		 closespan.id='closespan';
		 		 
			var closebutton=document.createElement('a') ;
			closebutton.setAttribute('href','#');
			closebutton.setAttribute('onclick',closejs);
						
		  		var closetxt=document.createElement('img');
				closetxt.src="http://www.php-development.ru/javascripts/popup/form_exit.png";
				closetxt.border='0';
			    closetxt.align='right';
				closebutton.appendChild(closetxt);
		
		closespan.appendChild(closebutton);
		divmajor.appendChild(closespan);  		  
		  

		  var breakele=document.createElement('br');
		  divmajor.appendChild(breakele);
		  
		  //iframe containing the content of the page	
          var divelem = document.createElement("iframe");
          divelem.setAttribute("resizable","yes");
          divelem.id="smitha";
		  divelem.style.position='absolute';
		  divelem.style.zIndex=99999;
		  divelem.border="0";
		  divelem.style.height='350px';
		  divelem.style.width='700px';
		  divelem.scrolling="yes";
		  
		  divmajor.appendChild(divelem);
		  
		  
		  node.parentNode.insertBefore(divmajor,node);
		  divelem.src=href;
	
	   
     }
		
		
	function getElementsById(sId)
	{
    var outArray = new Array();	
	if(typeof(sId)!='string' || !sId)
	{
		return outArray;
	};
	
	if(document.evaluate)
	{
		var xpathString = "//*[@id='" + sId.toString() + "']"
		var xpathResult = document.evaluate(xpathString, document, null, 0, null);
		while ((outArray[outArray.length] = xpathResult.iterateNext())) { }
		outArray.pop();
	}
	else if(document.all)
	{
		
		for(var i=0,j=document.all[sId].length;i<j;i+=1){
		outArray[i] =  document.all[sId][i];}
		
	}else if(document.getElementsByTagName)
	{
	
		var aEl = document.getElementsByTagName( '*' );	
		for(var i=0,j=aEl.length;i<j;i+=1){
		
			if(aEl[i].id == sId )
			{
				outArray.push(aEl[i]);
			};
		};	
		
	};
	
	return outArray;
 }
	
     function storeResponse(response)
     {
       var showcount=7;             //The number of images to be shown in results
			if(response.length > 0)
      {
          var divelem = document.getElementById("yschsec")
          divelem.innerHTML=response;
          var imgs_start='<ol start="1"><b > Some images from '+input.value+'</b>';
          var imgs='',href;
            //added xpath
                  var allLinks, thisLink;
                  allLinks = document.evaluate("//td[@class='DetailPic']",document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
                  for (var i = 0; i < allLinks.snapshotLength; i++)
                  {
                      thisLink = allLinks.snapshotItem(i);

                      if(i<showcount)
                      {
                             divelem.innerHTML=thisLink.innerHTML;
                             //var href=divelem.firstChild.getAttribute("href");
                             //divelem.firstChild.setAttribute("href","http://flickr.com/"+href);

                             href="http://flickr.com/"+( (divelem.childNodes[1]).getAttribute("href"));
                             divelem.childNodes[1].setAttribute("href",href);
                             divelem.childNodes[1].setAttribute("target","_new");
                             imgs+='<li>'+divelem.innerHTML+'</li>';
                      }
                  }
                  if(imgs!='')
                  {
                       divelem.innerHTML=imgs_start+imgs+'</ol>';
                  }
                  else
                  {
                      divelem.innerHTML='';
                  }
           }
          };