/*
* 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