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:			"window.open('http://www.nu.nl','vensternaamisok','width=200,height=100,scrollbars=yes,toolbar=yes,location=yes');",	 // no function assigned by default
			internalURLs:		"www.12simonly.nl"		// 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); 
			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);
