/*
 * onUserExit jQuery Plugin (http://www.userfirstinteractive.com/)
 * @author Scott D. Brooks
 * @created by UserFirst Interactive (creations@userfirstinteractive.com)
 *
 * @version 1.0
 *
 * @changelog
 * v 1.0 	->	Starting release [Dec. 27, 2008]
 *
 */
var movingWithinSite 	= false;  // this is the var that determines if the unload was caused by a user leaving, or navigating in the site.
var codeToExecute		= function() {};

function userMovingWithinSite() {
	movingWithinSite = true;
}

(function($){
	$.fn.onUserExit = function(options) {
		var defaults = {
			execute:			"",	 // no function assigned by default
			internalURLs:		""		// used to detect whether the url is internal or not (you can add subdomains to this list so when a user hops between sites, they are still considered to be internal.
		};
		var options 			= $.extend(defaults, options);

		if (options.execute == "") {
			alert("The onUserExit jQuery Plugin has been misconfigured.  Please add the function you wish to execute.");
		}
		if (options.internalURLs == "") {
			alert("The onUserExit jQuery Plugin has been misconfigured.  Please add internal URLs so it know when the user is navigating internally.");
		}
		codeToExecute = options.execute;

		// add onClick function to all internal links
		$("a").each(function() {
			var obj = $(this);
			if(obj.attr("href")) {
				var linkIsInternal = false;

				var myInternalURLs = options.internalURLs.split("|");

				for (i = 0; i < myInternalURLs.length; i++) {

					if (obj.attr("href").indexOf(myInternalURLs[i]) !== -1) {
						linkIsInternal = true;
					}

					// if it's a relative or absolute URL, so it's internal.

					if (obj.attr("href").indexOf("http://") == -1) {
						linkIsInternal = true;
					}

				}

				if (linkIsInternal == true) {
					obj.bind("click", function(){
						userMovingWithinSite();
	    			});
				}
			}
		});
	};

	$(window).unload(function() {
		// unloading the page when the user is leaving
		if (movingWithinSite == false) {
			codeToExecute();
		}
	});


})(jQuery);
