AJS = {
  BASE_URL: "",
  drag_obj: null,
  drag_elm: null,
  _drop_zones: [],
  _cur_pos: null,
  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 _2 = AJS.forceArray(arguments);
    var _3 = _2.pop();
    var _4 = function (o) {
      if (!new RegExp("(^|\\s)" + _3 + "(\\s|$)").test(o.className)) {
        o.className += (o.className ? " " : "") + _3;
      }
    };
    AJS.map(_2, function (_6) {
      _4(_6);
    });
  },
  setStyle: function () {
    var _7 = AJS.forceArray(arguments);
    var _8 = _7.pop();
    var _9 = _7.pop();
    AJS.map(_7, function (_a) {
      _a.style[_9] = AJS.getCssDim(_8);
    });
  },
  extend: function (_b) {
    var _c = new this("no_init");
    for (k in _b) {
      var _d = _c[k];
      var _e = _b[k];
      if (_d && _d != _e && typeof _e == "function") {
        _e = this._parentize(_e, _d);
      }
      _c[k] = _e;
    }
    return new AJS.Class(_c);
  },
  log: function (o) {
    if (window.console) {
      console.log(o);
    } else {
      var div = AJS.$("ajs_logger");
      if (!div) {
        div = AJS.DIV({
          id: "ajs_logger",
          "style": "color: green; position: absolute; left: 0"
        });
        div.style.top = AJS.getScrollTop() + "px";
        AJS.ACN(AJS.getBody(), div);
      }
      AJS.setHTML(div, "" + o);
    }
  },
  setHeight: function () {
    var _11 = AJS.forceArray(arguments);
    _11.splice(_11.length - 1, 0, "height");
    AJS.setStyle.apply(null, _11);
  },
  _getRealScope: function (fn, _13) {
    _13 = AJS.$A(_13);
    var _14 = fn._cscope || window;
    return function () {
      var _15 = AJS.$FA(arguments).concat(_13);
      return fn.apply(_14, _15);
    };
  },
  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 _18, _19;
    if (self.innerHeight) {
      _18 = self.innerWidth;
      _19 = self.innerHeight;
    } else { if (doc.documentElement && doc.documentElement.clientHeight) {
        _18 = doc.documentElement.clientWidth;
        _19 = doc.documentElement.clientHeight;
      } else { if (doc.body) {
          _18 = doc.body.clientWidth;
          _19 = doc.body.clientHeight;
        }
      }
    }
    return {
      "w": _18,
      "h": _19
    };
  },
  flattenList: function (_1a) {
    var r = [];
    var _1c = function (r, l) {
      AJS.map(l, function (o) {
        if (o == null) {} else { if (AJS.isArray(o)) {
            _1c(r, o);
          } else {
            r.push(o);
          }
        }
      });
    };
    _1c(r, _1a);
    return r;
  },
  isFunction: function (obj) {
    return (typeof obj == "function");
  },
  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 _22 = AJS.forceArray(arguments);
    AJS.map(_22, function (elm) {
      AJS.swapDOM(elm, null);
    });
  },
  _unloadListeners: function () {
    if (AJS.listeners) {
      AJS.map(AJS.listeners, function (elm, _25, fn) {
        AJS.REV(elm, _25, fn);
      });
    }
    AJS.listeners = [];
  },
  join: function (_27, _28) {
    try {
      return _28.join(_27);
    } catch(e) {
      var r = _28[0] || "";
      AJS.map(_28, function (elm) {
        r += _27 + elm;
      },
      1);
      return r + "";
    }
  },
  getIndex: function (elm, _2c, _2d) {
    for (var i = 0; i < _2c.length; i++) {
      if (_2d && _2d(_2c[i]) || elm == _2c[i]) {
        return i;
      }
    }
    return -1;
  },
  isIn: function (elm, _30) {
    var i = AJS.getIndex(elm, _30);
    if (i != -1) {
      return true;
    } else {
      return false;
    }
  },
  isArray: function (obj) {
    return obj instanceof Array;
  },
  setLeft: function () {
    var _33 = AJS.forceArray(arguments);
    _33.splice(_33.length - 1, 0, "left");
    AJS.setStyle.apply(null, _33);
  },
  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;
  },
  getElementsByTagAndClassName: function (_36, _37, _38, _39) {
    var _3a = [];
    if (!AJS.isDefined(_38)) {
      _38 = document;
    }
    if (!AJS.isDefined(_36)) {
      _36 = "*";
    }
    var els = _38.getElementsByTagName(_36);
    var _3c = els.length;
    var _3d = new RegExp("(^|\\s)" + _37 + "(\\s|$)");
    for (i = 0, j = 0; i < _3c; i++) {
      if (_3d.test(els[i].className) || _37 == null) {
        _3a[j] = els[i];
        j++;
      }
    }
    if (_39) {
      return _3a[0];
    } else {
      return _3a;
    }
  },
  isOpera: function () {
    return (navigator.userAgent.toLowerCase().indexOf("opera") != -1);
  },
  isString: function (obj) {
    return (typeof obj == "string");
  },
  hideElement: function (elm) {
    var _40 = AJS.forceArray(arguments);
    AJS.map(_40, function (elm) {
      elm.style.display = "none";
    });
  },
  setOpacity: function (elm, p) {
    elm.style.opacity = p;
    elm.style.filter = "alpha(opacity=" + p * 100 + ")";
  },
  insertBefore: function (elm, _45) {
    _45.parentNode.insertBefore(elm, _45);
    return elm;
  },
  setWidth: function () {
    var _46 = AJS.forceArray(arguments);
    _46.splice(_46.length - 1, 0, "width");
    AJS.setStyle.apply(null, _46);
  },
  createArray: function (v) {
    if (AJS.isArray(v) && !AJS.isString(v)) {
      return v;
    } else { if (!v) {
        return [];
      } else {
        return [v];
      }
    }
  },
  isDict: function (o) {
    var _49 = String(o);
    return _49.indexOf(" Object") != -1;
  },
  isMozilla: function () {
    return (navigator.userAgent.toLowerCase().indexOf("gecko") != -1 && navigator.productSub >= 20030210);
  },
  removeEventListener: function (elm, _4b, fn, _4d) {
    var _4e = "ajsl_" + _4b + fn;
    if (!_4d) {
      _4d = false;
    }
    fn = elm[_4e] || fn;
    if (elm["on" + _4b] == fn) {
      elm["on" + _4b] = elm[_4e + "old"];
    }
    if (elm.removeEventListener) {
      elm.removeEventListener(_4b, fn, _4d);
      if (AJS.isOpera()) {
        elm.removeEventListener(_4b, fn, !_4d);
      }
    } else { if (elm.detachEvent) {
        elm.detachEvent("on" + _4b, fn);
      }
    }
  },
  callLater: function (fn, _50) {
    var _51 = function () {
      fn();
    };
    window.setTimeout(_51, _50);
  },
  setTop: function () {
    var _52 = AJS.forceArray(arguments);
    _52.splice(_52.length - 1, 0, "top");
    AJS.setStyle.apply(null, _52);
  },
  _createDomShortcuts: function () {
    var _53 = ["ul", "li", "td", "tr", "th", "tbody", "table", "input", "span", "b", "a", "div", "img", "button", "h1", "h2", "h3", "h4", "h5", "h6", "br", "textarea", "form", "p", "select", "option", "optgroup", "iframe", "script", "center", "dl", "dt", "dd", "small", "pre", "i"];
    var _54 = function (elm) {
      AJS[elm.toUpperCase()] = function () {
        return AJS.createDOM.apply(null, [elm, arguments]);
      };
    };
    AJS.map(_53, _54);
    AJS.TN = function (_56) {
      return document.createTextNode(_56);
    };
  },
  addCallback: function (fn) {
    this.callbacks.unshift(fn);
  },
  bindMethods: function (_58) {
    for (var k in _58) {
      var _5a = _58[k];
      if (typeof(_5a) == "function") {
        _58[k] = AJS.$b(_5a, _58);
      }
    }
  },
  partial: function (fn) {
    var _5c = AJS.$FA(arguments);
    _5c.shift();
    return function () {
      _5c = _5c.concat(AJS.$FA(arguments));
      return fn.apply(window, _5c);
    };
  },
  isNumber: function (obj) {
    return (typeof obj == "number");
  },
  getCssDim: function (dim) {
    if (AJS.isString(dim)) {
      return dim;
    } else {
      return dim + "px";
    }
  },
  isIe: function () {
    return (navigator.userAgent.toLowerCase().indexOf("msie") != -1 && navigator.userAgent.toLowerCase().indexOf("opera") == -1);
  },
  removeClass: function () {
    var _5f = AJS.forceArray(arguments);
    var cls = _5f.pop();
    var _61 = function (o) {
      o.className = o.className.replace(new RegExp("\\s?" + cls, "g"), "");
    };
    AJS.map(_5f, function (elm) {
      _61(elm);
    });
  },
  setHTML: function (elm, _65) {
    elm.innerHTML = _65;
    return elm;
  },
  map: function (_66, fn, _68, _69) {
    var i = 0,
    l = _66.length;
    if (_68) {
      i = _68;
    }
    if (_69) {
      l = _69;
    }
    for (i; i < l; i++) {
      var val = fn(_66[i], i);
      if (val != undefined) {
        return val;
      }
    }
  },
  addEventListener: function (elm, _6e, fn, _70, _71) {
    var _72 = "ajsl_" + _6e + fn;
    if (!_71) {
      _71 = false;
    }
    AJS.listeners = AJS.$A(AJS.listeners);
    if (AJS.isIn(_6e, ["keypress", "keydown", "keyup", "click"])) {
      var _73 = fn;
      fn = function (e) {
        AJS.setEventKey(e);
        return _73.apply(window, arguments);
      };
    }
    var _75 = AJS.isIn(_6e, ["submit", "load", "scroll", "resize"]);
    var _76 = AJS.$A(elm);
    AJS.map(_76, function (_77) {
      if (_70) {
        var _78 = fn;
        fn = function (e) {
          AJS.REV(_77, _6e, fn);
          return _78.apply(window, arguments);
        };
      }
      if (_75) {
        var _7a = _77["on" + _6e];
        var _7b = function () {
          if (_7a) {
            fn(arguments);
            return _7a(arguments);
          } else {
            return fn(arguments);
          }
        };
        _77[_72] = _7b;
        _77[_72 + "old"] = _7a;
        elm["on" + _6e] = _7b;
      } else {
        _77[_72] = fn;
        if (_77.attachEvent) {
          _77.attachEvent("on" + _6e, fn);
        } else { if (_77.addEventListener) {
            _77.addEventListener(_6e, fn, _71);
          }
        }
        AJS.listeners.push([_77, _6e, fn]);
      }
    });
  },
  preloadImages: function () {
    AJS.AEV(window, "load", AJS.$p(function (_7c) {
      AJS.map(_7c, function (src) {
        var pic = new Image();
        pic.src = src;
      });
    },
    arguments));
  },
  forceArray: function (_7f) {
    var r = [];
    AJS.map(_7f, 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 (_85, _86) {
    var d = AJS.DIV();
    d.innerHTML = _85;
    if (_86) {
      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 _89 = AJS.forceArray(arguments);
    AJS.map(_89, function (elm) {
      elm.style.display = "";
    });
  },
  bind: function (fn, _8c, _8d) {
    fn._cscope = _8c;
    return AJS._getRealScope(fn, _8d);
  },
  createDOM: function (_8e, _8f) {
    var i = 0,
    _91;
    var elm = document.createElement(_8e);
    var _93 = _8f[0];
    if (AJS.isDict(_8f[i])) {
      for (k in _93) {
        _91 = _93[k];
        if (k == "style" || k == "s") {
          elm.style.cssText = _91;
        } else { if (k == "c" || k == "class" || k == "className") {
            elm.className = _91;
          } else {
            elm.setAttribute(k, _91);
          }
        }
      }
      i++;
    }
    if (_93 == null) {
      i = 1;
    }
    for (var j = i; j < _8f.length; j++) {
      var _91 = _8f[j];
      if (_91) {
        var _95 = typeof(_91);
        if (_95 == "string" || _95 == "number") {
          _91 = AJS.TN(_91);
        }
        elm.appendChild(_91);
      }
    }
    return elm;
  },
  swapDOM: function (_96, src) {
    _96 = AJS.getElement(_96);
    var _98 = _96.parentNode;
    if (src) {
      src = AJS.getElement(src);
      _98.replaceChild(src, _96);
    } else {
      _98.removeChild(_96);
    }
    return src;
  },
  isDefined: function (o) {
    return (o != "undefined" && o != null);
  }
};
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.$AP = AJS.absolutePosition;
AJS.$FA = AJS.forceArray;
AJS.addEventListener(window, "unload", AJS._unloadListeners);
AJS._createDomShortcuts();
AJS.Class = function (_9a) {
  var fn = function () {
    if (arguments[0] != "no_init") {
      return this.init.apply(this, arguments);
    }
  };
  fn.prototype = _9a;
  AJS.update(fn, AJS.Class.prototype);
  return fn;
};
AJS.Class.prototype = {
  extend: function (_9c) {
    var _9d = new this("no_init");
    for (k in _9c) {
      var _9e = _9d[k];
      var cur = _9c[k];
      if (_9e && _9e != cur && typeof cur == "function") {
        cur = this._parentize(cur, _9e);
      }
      _9d[k] = cur;
    }
    return new AJS.Class(_9d);
  },
  implement: function (_a0) {
    AJS.update(this.prototype, _a0);
  },
  _parentize: function (cur, _a2) {
    return function () {
      this.parent = _a2;
      return cur.apply(this, arguments);
    };
  }
};
script_loaded = true;
script_loaded = true;