(function() {

// Add these classes to the "continue" and "back" links, respectively,
// on your speedbump page.
var SPEEDBUMP_CONTINUE_CLASS = "speedbump-continue";
var SPEEDBUMP_BACK_CLASS = "speedbump-back";

var REDIRECT_PARAM = "_redirect";

var attachSpeedbumpClickListener = function() {
	var nodes = [];
	
	var continueRegex = new RegExp("(?:^|\\s+)"+SPEEDBUMP_CONTINUE_CLASS+"(?:\\s+|$)", "i");
	
	var backRegex = new RegExp("(?:^|\\s+)"+SPEEDBUMP_BACK_CLASS+"(?:\\s+|$)", "i");
	
	var redirectRegex = new RegExp(REDIRECT_PARAM+".*$");
	
	var els = document.getElementsByTagName("a");
	for(var i = 0; i < els.length; i++) {
		if(continueRegex.test(els[i].className)) {
			// Set the continue link's href to the redirect URL.
			var param = redirectRegex.exec(window.location.href);
			if(param && param.length) {
				var parts = param[0].split("=");
				els[i].href = decodeURIComponent(parts[1]);
			}
		}
		else if(backRegex.test(els[i].className)) {
			// Back link. Set a click listener to trigger Javascript history function.
			var backFn = function(ev) { 
				if (ev.preventDefault) {
				    ev.preventDefault();
				} 
				else {
				    ev.returnValue = false;
				}
				
				window.history.go(-1); 
				return false; 
			}
			
			if(els[i].attachEvent) {
				els[i].attachEvent("onclick", backFn);
			}
			else if(els[i].addEventListener) {
				els[i].addEventListener("click", backFn, false);
			}
			else {
				els[i].onclick = backFn;
			}
		}
	}
	
	return nodes;
}

if(window.attachEvent) { // IE
	window.attachEvent("onload", attachSpeedbumpClickListener);
}
else if(window.addEventListener) {
	window.addEventListener("load", attachSpeedbumpClickListener, false);
}
else {
	window.onload = attachSpeedbumpClickListener;
}

})();