Source for "FBookInfoBox"

By Dan Jones
Has 4 other scripts.


// ==UserScript==
// @name          FBookInfoBox
// @namespace     http://goodevilgenius.blogspot.com/2006/12/facebook-info-box.html
// @description   Displays an info box for a Facebook user when you mouse over their name or pic while holding Alt.
// @include       http://*facebook.com*
// ==/UserScript==
//
// By: Dan Jones
// Email: good.evil.genius+Facebook AT gmail
// Last Update:  22 May 2007

function newElement(type,attributeCollection,childArray){var newEl=document.createElement(type);for(att in attributeCollection){newEl.setAttribute(att,attributeCollection[att]);}for(key in childArray){newEl.appendChild(childArray[key]);}return newEl;}function newHidden(id,value){return newElement('input',{'type':'hidden','id':id,'value':value},null);}function PopDialog(data){PopDialog.close();PopDialog.dialogs['uid'+data.uid]=this;this.uid=data.uid;this.name=data.name;this.thumbURL=data.thumb;this.isFriend=data.friend;this.profViewable=data.viewable;this.networks=data.networks;this.residence=data.residence;this.fields=data.fields;this.domEl=null;this.content=null;this.fullContent=null;this.picContent=null;var findImgName=new RegExp('^(.*)[nst]([0-9_]*\.jpg)$','');this.bigImgURL=findImgName.exec(this.thumbURL)[1]+"n"+findImgName.exec(this.thumbURL)[2];this.littleThumbURL=findImgName.exec(this.thumbURL)[1]+"t"+findImgName.exec(this.thumbURL)[2];var findDefault=new RegExp('^(.*\/).(_default.jpg)','');if(findDefault.test(this.thumbURL)){this.bigImgURL=this.thumbURL;this.littleThumbURL=findDefault.exec(this.thumbURL)[1]+'t'+findDefault.exec(this.thumbURL)[2];}}PopDialog.dialogs={};PopDialog.close=function(){var dia=document.getElementById('generic_dialog');while(dia){dia.style.display='none';dia.parentNode.removeChild(dia);dia=document.getElementById('generic_dialog');}};PopDialog.prototype.show=function(picOnly){PopDialog.close();if(!this.domEl){this.build();}if(picOnly){this.fillPic();}else{this.fill();}document.body.appendChild(this.domEl);this.domEl.style.display='block';};PopDialog.prototype.listItem=function(href,text){return newElement('li',null,[newElement('a',{'href':href},[document.createTextNode(text)])]);};PopDialog.prototype.fillPic=function(){if(!this.domEl){return;}if(!this.content){return;}if(!this.picContent){return;}this.content.parentNode.replaceChild(this.picContent,this.content);this.content=this.picContent;if(this.content.childNodes.length>0){return;}var title=newElement('h2',null,[newElement('span',null,[document.createTextNode(this.name)])]);this.content.appendChild(title);var img=newElement('img',{'src':this.bigImgURL});img.addEventListener('click',function(){var current=this.getAttribute('src');this.setAttribute('src',this.nextSibling.getAttribute('value'));this.nextSibling.setAttribute('value',this.nextSibling.nextSibling.getAttribute('value'));this.nextSibling.nextSibling.setAttribute('value',current);},false);var imgChildren=[img,newHidden(null,this.thumbURL),newHidden(null,this.littleThumbURL),document.createElement('br')];var inBodyDiv=newElement('div',{'class':'clearfix'},imgChildren);var outerBodyDiv=newElement('div',{'class':'dialog_body'},[inBodyDiv]);var button=newElement('input',{'type':'button','value':'Close','class':'inputsubmit'});button.addEventListener('click',PopDialog.close,false);var buttonsDiv=newElement('div',{'class':'dialog_buttons'},[button]);var contentDiv=newElement('div',{'class':'dialog_content'},[outerBodyDiv,buttonsDiv]);this.content.appendChild(contentDiv);};PopDialog.prototype.fill=function(){if(!this.domEl){return;}if(!this.content){return;}if(!this.fullContent){return;}this.content.parentNode.replaceChild(this.fullContent,this.content);this.content=this.fullContent;if(this.content.childNodes.length>0){return;}this.content.appendChild(newElement('h2',null,[newElement('span',null,[document.createTextNode('Actions')])]));var inBodyDiv=newElement('div',{'class':'clearfix'});var outerBodyDiv=newElement('div',{'class':'dialog_body'},[inBodyDiv]);var button=newElement('input',{'type':'button','value':'Close','class':'inputsubmit'});button.addEventListener('click',PopDialog.close,false);var buttonsDiv=newElement('div',{'class':'dialog_buttons'},[button]);var contentDiv=newElement('div',{'class':'dialog_content'},[outerBodyDiv,buttonsDiv]);this.content.appendChild(contentDiv);var imgTD=newElement('td',{'style':'vertical-align: top;'});var infoTD=newElement('td',{'style':'width: auto; padding-right: 15px; vertical-align: top;'});var actions1TD=newElement('td',{'style':'vertical-align: top;'});var actions2TD=newElement('td',{'style':'vertical-align: top;'});var innerTBody=newElement('tbody',null,[newElement('tr',null,[imgTD,infoTD,actions1TD,actions2TD])]);var innerTable=newElement('table',null,[innerTBody]);inBodyDiv.appendChild(innerTable);var img=newElement('img',{'src':this.thumbURL});img.addEventListener('click',function(){var current=this.getAttribute('src');this.setAttribute('src',this.nextSibling.getAttribute('value'));this.nextSibling.setAttribute('value',this.nextSibling.nextSibling.getAttribute('value'));this.nextSibling.nextSibling.setAttribute('value',current);},false);var noteSpan=newElement('span',null,[document.createTextNode('Click image to embiggen')]);var imgChildren=[img,newHidden(null,this.bigImgURL),newHidden(null,this.littleThumbURL),document.createElement('br'),noteSpan];var imgDiv=newElement('div',{'style':'float: left;'},imgChildren);imgTD.appendChild(imgDiv);var nameDT,nameDD,resDT,resDD,fieldDT,field1DD,field2DD;var nets=[];if(this.residence){resDT=newElement('dt',null,[document.createTextNode("Residence")]);resDD=newElement('dd',{'style':'width: auto;'},[document.createTextNode(this.residence)]);}for(var i in this.networks){var netDT=newElement('dt',null,[document.createTextNode("Network")]);var netDD=newElement('dd',{'style':'width: auto;'},[document.createTextNode(this.networks[i].name)]);nets.push({"dt":netDT,"dd":netDD});}if(this.fields.length>0){var fieldText=(this.fields.length=2)?"Fields":"Field";fieldDT=newElement('dt',null,[document.createTextNode(fieldText)]);field1DD=newElement('dd',{'style':'width: auto;'},[document.createTextNode(this.fields[0])]);if(this.fields[1]){field2DD=newElement('dd',{'style':'width: auto;','class':'aux'},[document.createTextNode(this.fields[1])]);}}nameDT=newElement('dt',null,[document.createTextNode("Name")]);var nameLink=(this.profViewable)?newElement('a',{'href':'profile.php?id='+this.uid},[document.createTextNode(this.name)]):document.createTextNode(this.name);nameDD=newElement('dd',{'style':'width: auto;'},[nameLink]);var info=newElement('dl',{'class':'clearfix'},[nameDT,nameDD]);var infoDiv=newElement('div',{'class':'info','style':'width: auto;'},[info]);var resultsDiv=newElement('div',{'class':"result clearfix",'style':'width: 100%; border: 1px #CCCCCC solid;'},[infoDiv]);if(resDT&&resDD){info.appendChild(resDT);info.appendChild(resDD);}for(var i in nets){info.appendChild(nets[i].dt);info.appendChild(nets[i].dd);}if(fieldDT&&field1DD){info.appendChild(fieldDT);info.appendChild(field1DD);if(field2DD){info.appendChild(field2DD);}}var actions1=newElement('ul',{'class':'actionspro','style':'float: right;'});var actions2=newElement('ul',{'class':'actionspro','style':'float: right;'});infoTD.appendChild(resultsDiv);actions1TD.appendChild(actions1);actions2TD.appendChild(actions2);if(!this.profViewable){actions2TD.style.display='none';}actions1.appendChild(this.listItem('message.php?id='+this.uid,'Send Message'));var pokeItem=this.listItem('poke.php?id='+this.uid,'Poke');pokeItem.firstChild.setAttribute('onclick','show_poke_dialog('+this.uid+'); return false;');actions1.appendChild(pokeItem);actions1.appendChild(this.listItem('friends.php?id='+this.uid,'Friends'));actions1.appendChild(this.listItem('notes.php?id='+this.uid,'Notes'));actions1.appendChild(this.listItem('notes.php?subj='+this.uid,'Notes About'));if(this.profViewable){actions2.appendChild(this.listItem('photo_search.php?id='+this.uid,'Photos'));}if(this.profViewable){actions2.appendChild(this.listItem('photo_search.php?id='+this.uid+'&m=1','Mutual Photos'));}if(this.profViewable){actions2.appendChild(this.listItem('minifeed.php?id='+this.uid,'Minifeed'));}if(this.profViewable){actions2.appendChild(this.listItem('shared.php?posted&id='+this.uid,'Shares'));}if(this.profViewable){actions2.appendChild(this.listItem('wall.php?id='+this.uid,'Wall'));}if(this.profViewable){actions2.appendChild(this.listItem('grouphome.php?id='+this.uid,'Groups'));}if(this.isFriend){actions2.appendChild(this.listItem('gifts.php?id='+this.uid,'Gifts'));}if(this.isFriend){actions2.appendChild(this.listItem('http://www.facebook.com/giftshop.php?ref=wp&to='+this.uid,'Give Gift'));}var addItem;if(this.isFriend){addItem=this.listItem('friends.php?remove_friend=1&friend_id='+this.uid+'&lt=128','Remove Friend');}else{addItem=this.listItem('addfriend.php?id='+this.uid,'Add Friend');}actions1.appendChild(addItem);};PopDialog.prototype.build=function(){this.domEl=document.createElement('div');this.domEl.setAttribute('id','generic_dialog');this.domEl.setAttribute('class','generic_dialog pop_dialog');this.domEl.style.display='none';this.domEl.style.position='fixed';this.domEl.style.left='0';this.domEl.style.top='0';this.domEl.style.width='auto';var table=newElement('table',{'class':'pop_dialog_table'});var innerDiv=newElement('div',{'id':'generic_dialog_popup','style':'width: 100%;'},[table]);this.domEl.appendChild(innerDiv);var tbody=document.createElement('tbody');table.appendChild(tbody);var tr1=document.createElement('tr');var tr2=document.createElement('tr');var tr3=document.createElement('tr');tbody.appendChild(tr1);tbody.appendChild(tr2);tbody.appendChild(tr3);var topleft=newElement('td',{'class':'pop_topleft'});tr1.appendChild(topleft);var top=newElement('td',{'class':'pop_border'});tr1.appendChild(top);var topright=newElement('td',{'class':'pop_topright'});tr1.appendChild(topright);var bottomleft=newElement('td',{'class':'pop_bottomleft'});tr3.appendChild(bottomleft);var bottom=newElement('td',{'class':'pop_border'});tr3.appendChild(bottom);var bottomright=newElement('td',{'class':'pop_bottomright'});tr3.appendChild(bottomright);var left=newElement('td',{'class':'pop_border'});tr2.appendChild(left);this.fullContent=newElement('td',{'id':'pop_content','class':'pop_content','style':'width: auto;'});this.picContent=newElement('td',{'id':'pop_content','class':'pop_content','style':'width: auto;'});this.content=this.fullContent;tr2.appendChild(this.content);var right=newElement('td',{'class':'pop_border'});tr2.appendChild(right);this.domEl.addEventListener('dblclick',function(e){e.stopPropagation();},false);};function fetchData(toUid,picOnly){if(PopDialog.dialogs['uid'+toUid]){PopDialog.dialogs['uid'+toUid].show(picOnly);return;}var data={};var ajax=new XMLHttpRequest();ajax.open("GET","s.php?k=10080&id="+toUid);ajax.onreadystatechange=function(){if(ajax.readyState==4){var resp=ajax.responseText;var parser=new DOMParser();var data={"uid":toUid,"name":null,"friend":false,"viewable":false,"thumb":false,"networks":[],"fields":[]};var findImg=new RegExp('<div class="image">.*</div>','m');var findName=new RegExp('<dd class="result_name">(.*)</dd>');var findLink=new RegExp('<a[^>]*>([^<]*)<.*','');var findHref=new RegExp('href="([^"]*)"');var findNetworks=new RegExp('<dd class="result_network[^>]*>(.*)</dd>','g');var findANetwork=new RegExp('<dd class="result_network[^>]*>(.*)</dd>');var findOneField=new RegExp('<dt>Fields?:</dt>[^<]*<dd>(.*)</dd>','m');var findTwoField=new RegExp('<dt>Fields?:</dt>[^<]*<dd>(.*)</dd>[^<]*<dd class="aux">(.*)</dd>','m');var findFriend=new RegExp('remove_friend','');if(findImg.test(resp)){var imgDivStr=findImg.exec(resp)[0];var imgDiv=parser.parseFromString(imgDivStr,"text/xml");data.thumb=imgDiv.getElementsByTagName('img')[0].getAttribute('src');}data.name=findName.exec(resp)[1];if(findLink.test(data.name)){data.name=findLink.exec(data.name)[1];data.viewable=true;}var nets=resp.match(findNetworks);for(var i in nets){var findResult=findANetwork.exec(nets[i]);var href=null;var net=findResult[1];if(findLink.test(net)){href=findHref.exec(net)[1];net=findLink.exec(net)[1];}data.networks.push({"name":net,"href":href});}var fieldfind1,fieldfind2;if(findTwoField.test(resp)){fieldfind1=findTwoField.exec(resp)[1];fieldfind2=findTwoField.exec(resp)[2];if(findLink.test(fieldfind1)){fieldfind1=findLink.exec(fieldfind1)[1];}if(findLink.test(fieldfind2)){fieldfind2=findLink.exec(fieldfind2)[1];}data.fields.push(fieldfind1);data.fields.push(fieldfind2);}else if(findOneField.test(resp)){fieldfind1=findOneField.exec(resp)[1];if(findLink.test(fieldfind1)){fieldfind1=findLink.exec(fieldfind1)[1];}data.fields.push(fieldfind1);}data.friend=findFriend.test(resp);var newDialog=new PopDialog(data);newDialog.show(picOnly);}};ajax.send(null);}function appendStuff(snapshot){var i=0;var thisLink;while(i<snapshot.snapshotLength){thisLink=snapshot.snapshotItem(i);i++;var url,uid;if(thisLink.nodeName.toLowerCase()=='a'){url=thisLink.getAttribute('href');uid=url.replace(/.*id=(\d+).*/,"$1");if(thisLink.childNodes.length===0){continue;}}else if(thisLink.nodeName.toLowerCase()=='img'){url=thisLink.getAttribute('src');uid=url.replace(/.*\/.([0-9]*)_.*/,"$1");}var uidField=newHidden(null,uid);thisLink.parentNode.insertBefore(uidField,thisLink.nextSibling);thisLink.addEventListener('mouseover',function(e){if(e.altKey){var thisUid=this.nextSibling.getAttribute('value');fetchData(thisUid,e.shiftKey);}},false);}}function main(){var allLinks;var style1=newElement('link',{'type':'text/css','href':'http://static.ak.facebook.com/css/dialog.css','rel':'stylesheet'});var style2=newElement('link',{'type':'text/css','href':'http://static.ak.facebook.com/css/dialogpro.css','rel':'stylesheet'});document.documentElement.firstChild.appendChild(style1);document.documentElement.firstChild.appendChild(style2);allLinks=document.evaluate('//a[contains(@href, "/profile")][not(img)]',document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);appendStuff(allLinks);allLinks=document.evaluate('//a[contains(@href, "s.php?k=10080&id=")][not(img)]',document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);appendStuff(allLinks);allLinks=document.evaluate('//img[contains(@src, "profile")][not(contains(@src, "object"))]',document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);appendStuff(allLinks);document.documentElement.addEventListener('dblclick',PopDialog.close,false);}main();