AJS = {
    BASE_URL: "",
    drag_obj: null,
    drag_elm: null,
    _drop_zones: [],
    _cur_pos: null,
    join: function(_1, _2) {
        try {
            return _2.join(_1);
        } catch (e) {
            var r = _2[0] || "";
            AJS.map(_2,
            function(_4) {
                r += _1 + _4;
            },
            1);
            return r + "";
        }
    },
    getScrollTop: function() {
        var t;
        if (document.documentElement && document.documentElement.scrollTop) {
            t = document.documentElement.scrollTop;
        } else {
            if (document.body) {
                t = document.body.scrollTop;
            }
        }
        return t;
    },
    addClass: function() {
        var _6 = AJS.forceArray(arguments);
        var _7 = _6.pop();
        var _8 = function(o) {
            if (!new RegExp("(^|\\s)" + _7 + "(\\s|$)").test(o.className)) {
                o.className += (o.className ? " " : "") + _7;
            }
        };
        AJS.map(_6,
        function(_a) {
            _8(_a);
        });
    },
    setStyle: function() {
        var _b = AJS.forceArray(arguments);
        var _c = _b.pop();
        var _d = _b.pop();
        AJS.map(_b,
        function(_e) {
            _e.style[_d] = AJS.getCssDim(_c);
        });
    },
    _getRealScope: function(fn, _10, _11, _12) {
        var _13 = window;
        _10 = AJS.$A(_10);
        if (fn._cscope) {
            _13 = fn._cscope;
        }
        return function() {
            var _14 = [];
            var i = 0;
            if (_11) {
                i = 1;
            }
            AJS.map(arguments,
            function(arg) {
                _14.push(arg);
            },
            i);
            _14 = _14.concat(_10);
            if (_12) {
                _14 = _14.reverse();
            }
            return fn.apply(_13, _14);
        };
    },
    preloadImages: function() {
        AJS.AEV(window, "load", AJS.$p(function(_17) {
            AJS.map(_17,
            function(src) {
                var pic = new Image();
                pic.src = src;
            });
        },
        arguments));
    },
    _createDomShortcuts: function() {
        var _1a = ["ul", "li", "td", "tr", "th", "tbody", "table", "input", "span", "b", "a", "div", "img", "button", "h1", "h2", "h3", "br", "textarea", "form", "p", "select", "option", "iframe", "script", "center", "dl", "dt", "dd", "small", "pre"];
        var _1b = function(elm) {
            var _1d = "return AJS.createDOM.apply(null, ['" + elm + "', arguments]);";
            var _1e = "function() { " + _1d + "    }";
            eval("AJS." + elm.toUpperCase() + "=" + _1e);
        };
        AJS.map(_1a, _1b);
        AJS.TN = function(_1f) {
            return document.createTextNode(_1f);
        };
    },
    documentInsert: function(elm) {
        if (typeof (elm) == "string") {
            elm = AJS.HTML2DOM(elm);
        }
        document.write("<span id=\"dummy_holder\"></span>");
        AJS.swapDOM(AJS.$("dummy_holder"), elm);
    },
    getWindowSize: function(doc) {
        doc = doc || document;
        var _22,
        _23;
        if (self.innerHeight) {
            _22 = self.innerWidth;
            _23 = self.innerHeight;
        } else {
            if (doc.documentElement && doc.documentElement.clientHeight) {
                _22 = doc.documentElement.clientWidth;
                _23 = doc.documentElement.clientHeight;
            } else {
                if (doc.body) {
                    _22 = doc.body.clientWidth;
                    _23 = doc.body.clientHeight;
                }
            }
        }
        return {
            "w": _22,
            "h": _23
        };
    },
    flattenList: function(_24) {
        var r = [];
        var _26 = function(r, l) {
            AJS.map(l,
            function(o) {
                if (o == null) { } else {
                    if (AJS.isArray(o)) {
                        _26(r, o);
                    } else {
                        r.push(o);
                    }
                }
            });
        };
        _26(r, _24);
        return r;
    },
    setEventKey: function(e) {
        e.key = e.keyCode ? e.keyCode : e.charCode;
        if (window.event) {
            e.ctrl = window.event.ctrlKey;
            e.shift = window.event.shiftKey;
        } else {
            e.ctrl = e.ctrlKey;
            e.shift = e.shiftKey;
        }
        switch (e.key) {
            case 63232:
                e.key = 38;
                break;
            case 63233:
                e.key = 40;
                break;
            case 63235:
                e.key = 39;
                break;
            case 63234:
                e.key = 37;
                break;
        }
    },
    removeElement: function() {
        var _2b = AJS.forceArray(arguments);
        AJS.map(_2b,
        function(elm) {
            AJS.swapDOM(elm, null);
        });
    },
    _unloadListeners: function() {
        if (AJS.listeners) {
            AJS.map(AJS.listeners,
            function(elm, _2e, fn) {
                AJS.REV(elm, _2e, fn);
            });
        }
        AJS.listeners = [];
    },
    partial: function(fn) {
        var _31 = AJS.forceArray(arguments);
        return AJS.$b(fn, null, _31.slice(1, _31.length).reverse(), false, true);
    },
    getIndex: function(elm, _33, _34) {
        for (var i = 0; i < _33.length; i++) {
            if (_34 && _34(_33[i]) || elm == _33[i]) {
                return i;
            }
        }
        return -1;
    },
    isDefined: function(o) {
        return (o != "undefined" && o != null);
    },
    isArray: function(obj) {
        return obj instanceof Array;
    },
    setLeft: function() {
        var _38 = AJS.forceArray(arguments);
        _38.splice(_38.length - 1, 0, "left");
        AJS.setStyle.apply(null, _38);
    },
    appendChildNodes: function(elm) {
        if (arguments.length >= 2) {
            AJS.map(arguments,
            function(n) {
                if (AJS.isString(n)) {
                    n = AJS.TN(n);
                }
                if (AJS.isDefined(n)) {
                    elm.appendChild(n);
                }
            },
            1);
        }
        return elm;
    },
    isOpera: function() {
        return (navigator.userAgent.toLowerCase().indexOf("opera") != -1);
    },
    isString: function(obj) {
        return (typeof obj == "string");
    },
    hideElement: function(elm) {
        var _3d = AJS.forceArray(arguments);
        AJS.map(_3d,
        function(elm) {
            elm.style.display = "none";
        });
    },
    setOpacity: function(elm, p) {
        elm.style.opacity = p;
        elm.style.filter = "alpha(opacity=" + p * 100 + ")";
    },
    setHeight: function() {
        var _41 = AJS.forceArray(arguments);
        _41.splice(_41.length - 1, 0, "height");
        AJS.setStyle.apply(null, _41);
    },
    setWidth: function() {
        var _42 = AJS.forceArray(arguments);
        _42.splice(_42.length - 1, 0, "width");
        AJS.setStyle.apply(null, _42);
    },
    createArray: function(v) {
        if (AJS.isArray(v) && !AJS.isString(v)) {
            return v;
        } else {
            if (!v) {
                return [];
            } else {
                return [v];
            }
        }
    },
    isDict: function(o) {
        var _45 = String(o);
        return _45.indexOf(" Object") != -1;
    },
    isMozilla: function() {
        return (navigator.userAgent.toLowerCase().indexOf("gecko") != -1 && navigator.productSub >= 20030210);
    },
    _listenOnce: function(elm, _47, fn) {
        var _49 = function() {
            AJS.removeEventListener(elm, _47, _49);
            fn(arguments);
        };
        return _49;
    },
    addEventListener: function(elm, _4b, fn, _4d, _4e) {
        if (!_4e) {
            _4e = false;
        }
        var _4f = AJS.$A(elm);
        AJS.map(_4f,
        function(_50) {
            if (_4d) {
                fn = AJS._listenOnce(_50, _4b, fn);
            }
            if (AJS.isIn(_4b, ["submit", "load", "scroll", "resize"])) {
                var old = elm["on" + _4b];
                elm["on" + _4b] = function() {
                    if (old) {
                        fn(arguments);
                        return old(arguments);
                    } else {
                        return fn(arguments);
                    }
                };
                return;
            }
            if (AJS.isIn(_4b, ["keypress", "keydown", "keyup", "click"])) {
                var _52 = fn;
                fn = function(e) {
                    AJS.setEventKey(e);
                    return _52.apply(null, arguments);
                };
            }
            if (_50.attachEvent) {
                _50.attachEvent("on" + _4b, fn);
            } else {
                if (_50.addEventListener) {
                    _50.addEventListener(_4b, fn, _4e);
                }
            }
            AJS.listeners = AJS.$A(AJS.listeners);
            AJS.listeners.push([_50, _4b, fn]);
        });
    },
    createDOM: function(_54, _55) {
        var i = 0,
        _57;
        elm = document.createElement(_54);
        if (AJS.isDict(_55[i])) {
            for (k in _55[0]) {
                _57 = _55[0][k];
                if (k == "style") {
                    elm.style.cssText = _57;
                } else {
                    if (k == "class" || k == "className") {
                        elm.className = _57;
                    } else {
                        elm.setAttribute(k, _57);
                    }
                }
            }
            i++;
        }
        if (_55[0] == null) {
            i = 1;
        }
        AJS.map(_55,
        function(n) {
            if (n) {
                if (AJS.isString(n) || AJS.isNumber(n)) {
                    n = AJS.TN(n);
                }
                elm.appendChild(n);
            }
        },
        i);
        return elm;
    },
    setTop: function() {
        var _59 = AJS.forceArray(arguments);
        _59.splice(_59.length - 1, 0, "top");
        AJS.setStyle.apply(null, _59);
    },
    getElementsByTagAndClassName: function(_5a, _5b, _5c) {
        var _5d = [];
        if (!AJS.isDefined(_5c)) {
            _5c = document;
        }
        if (!AJS.isDefined(_5a)) {
            _5a = "*";
        }
        var els = _5c.getElementsByTagName(_5a);
        var _5f = els.length;
        var _60 = new RegExp("(^|\\s)" + _5b + "(\\s|$)");
        for (i = 0, j = 0; i < _5f; i++) {
            if (_60.test(els[i].className) || _5b == null) {
                _5d[j] = els[i];
                j++;
            }
        }
        return _5d;
    },
    removeClass: function() {
        var _61 = AJS.forceArray(arguments);
        var cls = _61.pop();
        var _63 = function(o) {
            o.className = o.className.replace(new RegExp("\\s?" + cls, "g"), "");
        };
        AJS.map(_61,
        function(elm) {
            _63(elm);
        });
    },
    bindMethods: function(_66) {
        for (var k in _66) {
            var _68 = _66[k];
            if (typeof (_68) == "function") {
                _66[k] = AJS.$b(_68, _66);
            }
        }
    },
    log: function(o) {
        if (AJS.isMozilla()) {
            console.log(o);
        } else {
            var div = AJS.DIV({
                "style": "color: green"
            });
            AJS.ACN(AJS.getBody(), AJS.setHTML(div, "" + o));
        }
    },
    isNumber: function(obj) {
        return (typeof obj == "number");
    },
    map: function(_6c, fn, _6e, _6f) {
        var i = 0,
        l = _6c.length;
        if (_6e) {
            i = _6e;
        }
        if (_6f) {
            l = _6f;
        }
        for (i; i < l; i++) {
            fn.apply(null, [_6c[i], i]);
        }
    },
    removeEventListener: function(elm, _73, fn, _75) {
        if (!_75) {
            _75 = false;
        }
        if (elm.removeEventListener) {
            elm.removeEventListener(_73, fn, _75);
            if (AJS.isOpera()) {
                elm.removeEventListener(_73, fn, !_75);
            }
        } else {
            if (elm.detachEvent) {
                elm.detachEvent("on" + _73, fn);
            }
        }
    },
    getCssDim: function(dim) {
        if (AJS.isString(dim)) {
            return dim;
        } else {
            return dim + "px";
        }
    },
    setHTML: function(elm, _78) {
        elm.innerHTML = _78;
        return elm;
    },
    bind: function(fn, _7a, _7b, _7c, _7d) {
        fn._cscope = _7a;
        return AJS._getRealScope(fn, _7b, _7c, _7d);
    },
    forceArray: function(_7e) {
        var r = [];
        AJS.map(_7e,
        function(elm) {
            r.push(elm);
        });
        return r;
    },
    update: function(l1, l2) {
        for (var i in l2) {
            l1[i] = l2[i];
        }
        return l1;
    },
    getBody: function() {
        return AJS.$bytc("body")[0];
    },
    HTML2DOM: function(_84, _85) {
        var d = AJS.DIV();
        d.innerHTML = _84;
        if (_85) {
            return d.childNodes[0];
        } else {
            return d;
        }
    },
    getElement: function(id) {
        if (AJS.isString(id) || AJS.isNumber(id)) {
            return document.getElementById(id);
        } else {
            return id;
        }
    },
    showElement: function() {
        var _88 = AJS.forceArray(arguments);
        AJS.map(_88,
        function(elm) {
            elm.style.display = "";
        });
    },
    swapDOM: function(_8a, src) {
        _8a = AJS.getElement(_8a);
        var _8c = _8a.parentNode;
        if (src) {
            src = AJS.getElement(src);
            _8c.replaceChild(src, _8a);
        } else {
            _8c.removeChild(_8a);
        }
        return src;
    },
    isIn: function(elm, _8e) {
        var i = AJS.getIndex(elm, _8e);
        if (i != -1) {
            return true;
        } else {
            return false;
        }
    }
};
AJS.$ = AJS.getElement;
AJS.$$ = AJS.getElements;
AJS.$f = AJS.getFormElement;
AJS.$p = AJS.partial;
AJS.$b = AJS.bind;
AJS.$A = AJS.createArray;
AJS.DI = AJS.documentInsert;
AJS.ACN = AJS.appendChildNodes;
AJS.RCN = AJS.replaceChildNodes;
AJS.AEV = AJS.addEventListener;
AJS.REV = AJS.removeEventListener;
AJS.$bytc = AJS.getElementsByTagAndClassName;
AJS.addEventListener(window, "unload", AJS._unloadListeners);
AJS._createDomShortcuts();
AJS.Class = function(_90) {
    var fn = function() {
        if (arguments[0] != "no_init") {
            return this.init.apply(this, arguments);
        }
    };
    fn.prototype = _90;
    AJS.update(fn, AJS.Class.prototype);
    return fn;
};
AJS.Class.prototype = {
    extend: function(_92) {
        var _93 = new this("no_init");
        for (k in _92) {
            var _94 = _93[k];
            var cur = _92[k];
            if (_94 && _94 != cur && typeof cur == "function") {
                cur = this._parentize(cur, _94);
            }
            _93[k] = cur;
        }
        return new AJS.Class(_93);
    },
    implement: function(_96) {
        AJS.update(this.prototype, _96);
    },
    _parentize: function(cur, _98) {
        return function() {
            this.parent = _98;
            return cur.apply(this, arguments);
        };
    }
};
AJS.$ = AJS.getElement;
AJS.$$ = AJS.getElements;
AJS.$f = AJS.getFormElement;
AJS.$b = AJS.bind;
AJS.$p = AJS.partial;
AJS.$FA = AJS.forceArray;
AJS.$A = AJS.createArray;
AJS.DI = AJS.documentInsert;
AJS.ACN = AJS.appendChildNodes;
AJS.RCN = AJS.replaceChildNodes;
AJS.AEV = AJS.addEventListener;
AJS.REV = AJS.removeEventListener;
AJS.$bytc = AJS.getElementsByTagAndClassName;
AJSDeferred = function(req) {
    this.callbacks = [];
    this.errbacks = [];
    this.req = req;
};
AJSDeferred.prototype = {
    excCallbackSeq: function(req, _9b) {
        var _9c = req.responseText;
        while (_9b.length > 0) {
            var fn = _9b.pop();
            var _9e = fn(_9c, req);
            if (_9e) {
                _9c = _9e;
            }
        }
    },
    callback: function() {
        this.excCallbackSeq(this.req, this.callbacks);
    },
    errback: function() {
        if (this.errbacks.length == 0) {
            alert("Error encountered:\n" + this.req.responseText);
        }
        this.excCallbackSeq(this.req, this.errbacks);
    },
    addErrback: function(fn) {
        this.errbacks.unshift(fn);
    },
    addCallback: function(fn) {
        this.callbacks.unshift(fn);
    },
    addCallbacks: function(fn1, fn2) {
        this.addCallback(fn1);
        this.addErrback(fn2);
    },
    sendReq: function(_a3) {
        if (AJS.isObject(_a3)) {
            this.req.send(AJS.queryArguments(_a3));
        } else {
            if (AJS.isDefined(_a3)) {
                this.req.send(_a3);
            } else {
                this.req.send("");
            }
        }
    }
};
script_loaded = true;

script_loaded = true;