/* * Social Limit - Only the social you care about. * * Enables your site to know which social bookmarking badges to display to your * visitors. It tells you all social sites the user has gone to, or you can * query for a specific one. * * For example: * * var sl = SocialHistory(); * alert( sl.doesVisit("Digg") ); // Returns true/false, -1 if unknown. * var listOfVisitedSites = sl.visitedSites(); * var checkedSites = sl.checkedSites(); * * If you want to add more sites to check, you can pass that in as a dictionary * to History: * * var more = { "Humanized": "http://humanized.com", * "Azarask.in": ["http://azarask.in", "http://azarask.in/blog"] * }; * var sl = SocialHistory(more); * alert( sl.doesVisit("Humanized") ); * * For a list of built-in sites, see the sites variable below. * * Copyright (c) 2008 Aza Raskin (http://azarask.in/blog) * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. * */ var SocialHistory = function( moreSites ){ var sites = { "Google":["http://www.google.com", "http://images.google.com", "http://mail.google.com", "http://news.google.com"], "Yahoo":["http://www.yahoo.com", "http://mail.yahoo.com"], "MSN":["http://www.msn.com", "http://www.live.com"], "Ask":["http://www.ask.com"], "Facebook":["http://facebook.com/home.php", "http://facebook.com", "https://login.facebook.com/login.php"], "MySpace":["http://www.myspace.com"], "LinkedIn":["http://www.linkedin.com"], "Twitter":["http://www.twitter.com", "http://m.twitter.com"], "Firstborn":["http://www.firstbornmultimedia.com/"], "Odopod":["http://www.odopod.com/"], "Soleilnoir":["http://www.soleilnoir.net/"], "Diplomatic Cover":["http://www.diplomatic-cover.com/"], "Fl-2":["http://www.fl-2.com/"], "Red Interactive":["http://www.ff0000.com/"], "Ignited":["http://www.ignitedla.com/site/", "http://www.ignitedla.com/"], "Big Spaceship":["http://www.bigspaceship.com/"], "Hi-Res":["http://www.hi-res.net/"], "Ideo":["http://www.ideo.com"], "Izea":["http://www.izea.com"], "Digg":["http://digg.com", "http://digg.com/login"], "Reddit":["http://reddit.com", "http://reddit.com/new/", "http://reddit.com/controversial/", "http://reddit.com/top/", "http://reddit.com/r/reddit.com/", "http://reddit.com/r/programming/"], "StumbleUpon":["http://stumbleupon.com"], "Delicious":["http://www.delicious.com", "http://del.icio.us"],}; for( var site in moreSites ) { // If we don't have the site, create the URL list. if( typeof( sites[site] ) == "undefined" ) sites[site] = []; // If the value is string, just push that onto the URL list. if( typeof( moreSites[site] ) == "string" ) sites[site].push( moreSites[site] ); else sites[site] = sites[site].concat( moreSites[site] ); } var visited = {}; function getStyle(el, scopeDoc,styleProp) { if (el.currentStyle) var y = el.currentStyle[styleProp]; else if (window.getComputedStyle) var y = scopeDoc.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp); return y; } function remove( el ) { el.parentNode.removeChild( el ); } // Code inspired by: // bindzus.wordpress.com/2007/12/24/adding-dynamic-contents-to-iframes function createIframe() { var iframe = document.createElement("iframe"); iframe.style.position = "absolute"; iframe.style.visibility = "hidden"; document.body.appendChild(iframe); // Firefox, Opera if(iframe.contentDocument) iframe.doc = iframe.contentDocument; // Internet Explorer else if(iframe.contentWindow) iframe.doc = iframe.contentWindow.document; // Magic: Force creation of the body (which is null by default in IE). // Also force the styles of visited/not-visted links. iframe.doc.open(); iframe.doc.write(''); iframe.doc.close(); // Return the iframe: iframe.doc contains the iframe. return iframe; } var iframe = createIframe(); function embedLinkInIframe( href, text ) { var a = iframe.doc.createElement("a"); a.href = href; a.innerHTML = site; iframe.doc.body.appendChild( a ); } for( var site in sites ) { var urls = sites[site]; for( var i=0; i