
// add support for Array scan (ECMA 262 extension) if not already supported
if (!Array.prototype.indexOf) {
  Array.prototype.indexOf = function(elt /*, from*/) {
    var len = this.length;

    var from = Number(arguments[1]) || 0;
    from = (from < 0)
         ? Math.ceil(from)
         : Math.floor(from);
    if (from < 0)
      from += len;

    for (; from < len; from++) {
      if (from in this && this[from] === elt)
        return from;
    }
    return -1;
  };
}

var DETECTFB = function() {
  /* Based on work by Niall Kennedy: http://www.niallkennedy.com/
  */
  this.runstate = {
    bookmark:{url:null,title:null},
    link:null,
    test_elem:null,
    visitedlinks:[]
  };

  this.testlinks = {bookmarks:[
 {provider:'facebook',urlset:['http:\/\/www.facebook.com\/','http:\/\/www.facebook.com\/posted.php','http:\/\/www.facebook.com\/home.php','http:\/\/www.facebook.com\/friends.php']}
]};

return {
  hasVisitedLinks:function(){
    if (runstate.visitedlinks && runstate.visitedlinks.length>0) {
	return true;
    } else {
	return false;
    }
  },

  bookmarkdiscovery:function() {
    if (location.href && document.title) {
	runstate.bookmark.url = location.href;
	runstate.bookmark.title = document.title;
	return true;
    } else {
	return false;
    }
  },

  init : function() {
	runstate.test_elem=document.getElementById('linktest');
	runstate.link=document.createElement('a');
	runstate.link.id = 'test_link';
	runstate.test_elem.appendChild(runstate.link);
	if (runstate.link.currentStyle) {
	    this.islinkvisited = function(url) {
		var link = document.createElement('a');
		link.href = url;
		runstate.test_elem.appendChild(link);
		var color = link.currentStyle.color;
		if (color=='#000000') {
		    runstate.test_elem.removeChild(link);
		    return true;
		} else {
		    runstate.test_elem.removeChild(link);
		    return false;
		}
	    }
	} else {
	    this.islinkvisited = function(url) {
		var link = document.createElement('a');
		link.href=url;
		runstate.test_elem.appendChild(link);
		var computed_style = document.defaultView.getComputedStyle(link,null);
		if (computed_style) {
		    if (computed_style.color=='rgb(0, 0, 0)') {
			runstate.test_elem.removeChild(link);
			return true;
		    }
		} else {
		    runstate.test_elem.removeChild(link);
		    return false;
		}
	    }
	}
  },

  scan:function() {
	var links = testlinks.bookmarks;
  	for (var i=0;i<links.length;i++){
	    var linktype = links[i];
	    if (linktype.provider && linktype.urlset) {
		var provider = linktype.provider;
		for (var j=0;j<linktype.urlset.length;j++) {
		    var url = linktype.urlset[j];
		    var found = this.islinkvisited(url);
		    if (found) {
			if (runstate.visitedlinks && runstate.visitedlinks.indexOf(provider)<0) {
			    runstate.visitedlinks.push(provider);
			    break;
			}
		    }
		    url=found=null;
		}
		provider=null;
	    }
	    linktype=null;
	}
	links=null;
	runstate.test_elem.innerHTML='';
  },

  addbuttons : function() {
      for (var i=0; i < runstate.visitedlinks.length; i++) {
        switch(runstate.visitedlinks[i]) {
          case 'facebook':
	    document.getElementById('playnow').style.display = 'none';
	    document.getElementById('playfb').style.display = 'block';
            break;
          default:
            break;
        }
      }
  },

  run : function() {
    if (this.bookmarkdiscovery()) {
      this.init();
      this.scan();
      if (this.hasVisitedLinks()) {
        this.addbuttons();
      }
    }
  }
};
}();

DETECTFB.run();
