(function() {
	var addListener = (function() {
		if (window.addEventListener) {
			return function(element, type, func) {
				element.addEventListener(type, func, false);
			};
		} else if (window.attachEvent) {
			return function(element, type, func) {
				element.attachEvent("on" + type, function() {
					func.call(element, window.event);
				});
			};
		}
	})(), preventDefault = function(e) {
		if (e.preventDefault) {
			e.preventDefault();
		} else {
			e.returnValue = false;
		}
	}, getTarget = function(e) {
		return e.target || (window.event ? event.srcElement : null);
	};

var forms = document.getElementsByTagName("form");
for (var i = 0, form; form = forms[i]; i++) {
    addListener(form, "submit", function(e) {
        var thisForm = getTarget(e),
            inputs = thisForm ? thisForm.getElementsByTagName("input") : false;
        if (!inputs) return;
        for (var j = 0, input; input = inputs[j]; j++) {
            if (input.getAttribute("required") && input.value === "") {
                alert("Please fill in the required input \"" + input.getAttribute("name") + "\"");
                input.focus();
                preventDefault(e);
                return;
            }
        }
    });
}
})();
