/*
**  jquery.extlink.js -- jQuery plugin for external link annotation
**  Copyright (c) 2007-2008 Ralf S. Engelschall <rse@engelschall.com> 
**  Licensed under GPL <http://www.gnu.org/licenses/gpl.txt>
**
**  
**  Modified by Scott A. Hulbert, 11-20-08
*/

(function($) {
    $.fn.extend({
        extlink: function (message) {
			var exec = true;
			
			var addDisclaimer = function() { return(confirm(message)); };	
            var url_prefix = String(document.location)
                .replace(/^(https?:\/\/[^:\/]+).*$/, "$1")
                .replace(/^((site)?file:\/\/.+\/)[^\/]+$/, "$1")
                .replace(/(\\.)/g, "\\$1");
            var host_name = String(document.location)
                .replace(/^/, "X")
                .replace(/^X(https?|ftp):\/\/([^:\/]+).*$/, "$1")
                .replace(/^X.*$/, "")
                .replace(/(\\.)/g, "\\$1");
            $("a", this).filter(function (i) {						
                var href = $(this).attr("href");
                if (href == null)
                    return false;
				else if (href.search('spreadsheets.google.com') !== -1)
					var exec = false;
				else if (href.search('google.com/translate') !== -1)
					var exec = false;
				else if (href.search('gmail') !== -1)
					var exec = false;
				else if (href.search('naviance') !== -1)
					var exec = false;
				else if (href.search('bxscience.edu') !== -1)
					var exec = false;
				else if (href.search('bxscience.entest.org') !== -1)
					var exec = false;
				else if (href.search('bxscience.enschool.org') !== -1)
					var exec = false;
				else 
				{
					return (
                       href.match(RegExp(
                           "^(" + url_prefix + ".*" +
                           (host_name != "" ? ("|" + "(https?|ftp)://" + host_name + "([/:].*)?") : "") +
                           "|" + "((https?|ftp):)?/[^/].*" +
                           ")$"
                       )) == null
                    && href.match(RegExp("^(https?|ftp)://.+")) != null);
				}
            }).each(function () {
				$(this).click( function() {
					if (exec !== false)
					{
						var tf = addDisclaimer();
						if (tf) return true;
						else return false;
					}
					else return false;
				});
            });
        }
    });
})(jQuery);

