function initSheet(sheetId, options) {
    Event.observe(window, "load", function() {
        var sortables = $(sheetId).getElementsByClassName(options.sortableClass);
        $A(sortables).each(function(sortable) {
            Event.observe(sortable, "click", function(event) {
                var id = event.target.id;
                if (!id) {
                    id = event.target.parentNode.id;
                }
                if (id && id.indexOf(options.sortableIdPrefix) == 0) {
                    id = id.substring(options.sortableIdPrefix.length);
                    var defaultAsc = "asc";
                    if (id.match("(\\+|-)$")) {
                        defaultAsc = (id.substring(id.length - 1) == "+") ? "asc": "desc";
                        id = id.substring(0, id.length - 1);
                    }
                    var h = $H(location.search.toQueryParams());
                    var key = h.get(options.sortedKeyParam);
                    var asc = h.get(options.sortedAscParam);
                    if (key == id && asc) {
                        asc = (asc == "asc") ? "desc": "asc";
                    } else {
                        asc = defaultAsc;
                    }
                    h.set(options.sortedKeyParam, id);
                    h.set(options.sortedAscParam, asc);
                    location.search = '?' + h.toQueryString();
                }
            });
            Event.observe(sortable, "mouseover", function() {
                Element.addClassName(sortable, "selected");
            });
            Event.observe(sortable, "mouseout", function() {
                Element.removeClassName(sortable, "selected");
            });
        });
        if (options.selectorClass) {
            var selectors = $(sheetId).getElementsByClassName(options.selectorClass);
            $A(selectors).each(function(selector) {
                Event.observe(selector, "mouseover", function(event) {
                    var tds = selector.getElementsByTagName("td");
                    for (var j = 0; j < tds.length; j++) {
                        Element.addClassName(tds[j], "selected");
                    }
                });
                Event.observe(selector, "mouseout", function(event) {
                    var tds = selector.getElementsByTagName("td");
                    for (var j = 0; j < tds.length; j++) {
                        Element.removeClassName(tds[j], "selected");
                    }
                });
                if (options.selectorIdPrefix && options.selectorUrlPrefix) {
                    Event.observe(selector, "click", function(event) {
                        if (Element.hasClassName(event.target, options.selectorExcludeClass)) {
                            return;
                        }
                        var id = selector.id;
                        if (id && id.indexOf(options.selectorIdPrefix) == 0) {
                            id = id.substring(options.selectorIdPrefix.length);
                            location.href = options.selectorUrlPrefix + id;
                        }
                    });
                }
            });
        }
    });
}

function paginate(p) {
    var h = $H(location.search.toQueryParams());
    h.set("p", p);
    location.search = '?' + h.toQueryString();
    return false;
}
var flag = true;
function disableSubmit(event) {
    if (event)event.stop();
    if (flag) {
        flag = false;
        $('sub_form').submit();
    }
    return false;
}

var send_flag = true;
function disSubmit(event) {

    if (event)event.stop();
    if (send_flag) {
        if (event)event.start();
        send_flag = false;
        return true;
    }
    return false;
}
