(function($) {
	
	$.fn.linkDisclaimer = function(callerSettings) {

		var self = this;

		this.settings = $.extend({
		  attribute: 'href',
		  event: 'click',
		  showDisclaimer: function(link, settings) {
  		  if(confirm(self.settings.disclaimer)) {window.open(link.attr(self.settings.attribute))};
		  }
		}, callerSettings);

		this.showDisclaimer = function(link, settings) {
		  this.settings.showDisclaimer(link, settings);
		}

    this.checkExternalLink = function(link) {

      if (link == undefined) {
        return false;
      }
      
    	var default_links = ['#', '/', 'mailto', 'localhost', 'archives'];

    	var external = true;

    	$.each(this.settings.valid_domains.concat(default_links), function() {
    	  if (link.indexOf(this) == 0 || link.indexOf('http://' + this) == 0 || link.indexOf('https://' + this) == 0) {
    	    external = false;
    	    return;
    	  }
    	});
    	
    	return external;

  	}

    $(self).filter(function() {
      return self.checkExternalLink($(this).attr(self.settings.attribute));
    }).bind(self.settings.event,function(e) {
      e.preventDefault();
      return self.showDisclaimer($(this), self.settings);
    }).addClass('show-disclaimer');

	};

})(jQuery);