(function() {
    var windowOpen = function(url, name, options, callback) {
        function toOptionString(options) {
            if (typeof options === 'string') {
                return options;
            }
            var result = [];
            for (var key in options) {
                if (options.hasOwnProperty(key)) {
                    result.push(key + '=' + options[key]);
                }
            }
            return result.join(',');
        }
        var opt = toOptionString(options);
        var child = window.open(url, name, opt);
        Event.observe(window, 'unload', function() {
            if (child && !child.closed) {
                child.close();
            }
        });
        return child;
    }
    window.windowOpen = windowOpen;

    var submitDisable = function(){
        $$('form.SubmitDisable input').each(function(elem) {
            if (['submit', 'button', 'img'].include(elem.type)) {
                return;
            }
            elem.observe('keydown', function(e) {
                if (e.keyCode == Event.KEY_RETURN) {
                    e.stop();
                }
            });
        });
    }
    document.observe('dom:loaded', function() {
        submitDisable();
    });
})();
