(function () {
  if (window.magicJS) {
    return
  }
  var a = {
    version: "2.3.10",
    UUID: 0,
    storage: {},
    $uuid: function (b) {
      return (b.$J_UUID || (b.$J_UUID = ++$J.UUID))
    },
    getStorage: function (b) {
      return ($J.storage[b] || ($J.storage[b] = {}))
    },
    $F: function () {},
    $false: function () {
      return false
    },
    defined: function (b) {
      return (undefined != b)
    },
    exists: function (b) {
      return !!(b)
    },
    j1: function (b) {
      if (!$J.defined(b)) {
        return false
      }
      if (b.$J_TYPE) {
        return b.$J_TYPE
      }
      if ( !! b.nodeType) {
        if (1 == b.nodeType) {
          return "element"
        }
        if (3 == b.nodeType) {
          return "textnode"
        }
      }
      if (b.length && b.item) {
        return "collection"
      }
      if (b.length && b.callee) {
        return "arguments"
      }
      if ((b instanceof window.Object || b instanceof window.Function) && b.constructor === $J.Class) {
        return "class"
      }
      if (b instanceof window.Array) {
        return "array"
      }
      if (b instanceof window.Function) {
        return "function"
      }
      if (b instanceof window.String) {
        return "string"
      }
      if ($J.v.trident) {
        if ($J.defined(b.cancelBubble)) {
          return "event"
        }
      } else {
        if (b instanceof window.Event || b === window.event || b.constructor == window.MouseEvent) {
          return "event"
        }
      }
      if (b instanceof window.Date) {
        return "date"
      }
      if (b instanceof window.RegExp) {
        return "regexp"
      }
      if (b === window) {
        return "window"
      }
      if (b === document) {
        return "document"
      }
      return typeof(b)
    },
    extend: function (f, e) {
      if (!(f instanceof window.Array)) {
        f = [f]
      }
      for (var d = 0, b = f.length; d < b; d++) {
        if (!$J.defined(f)) {
          continue
        }
        for (var c in (e || {})) {
          f[d][c] = e[c]
        }
      }
      return f[0]
    },
    implement: function (f, e) {
      if (!(f instanceof window.Array)) {
        f = [f]
      }
      for (var d = 0, b = f.length; d < b; d++) {
        if (!$J.defined(f[d])) {
          continue
        }
        if (!f[d].prototype) {
          continue
        }
        for (var c in (e || {})) {
          if (!f[d].prototype[c]) {
            f[d].prototype[c] = e[c]
          }
        }
      }
      return f[0]
    },
    nativize: function (d, c) {
      if (!$J.defined(d)) {
        return d
      }
      for (var b in (c || {})) {
        if (!d[b]) {
          d[b] = c[b]
        }
      }
      return d
    },
    $try: function () {
      for (var c = 0, b = arguments.length; c < b; c++) {
        try {
          return arguments[c]()
        } catch (d) {}
      }
      return null
    },
    $A: function (d) {
      if (!$J.defined(d)) {
        return $j([])
      }
      if (d.toArray) {
        return $j(d.toArray())
      }
      if (d.item) {
        var c = d.length || 0,
          b = new Array(c);
        while (c--) {
          b[c] = d[c]
        }
        return $j(b)
      }
      return $j(Array.prototype.slice.call(d))
    },
    now: function () {
      return new Date().getTime()
    },
    detach: function (f) {
      var d;
      switch ($J.j1(f)) {
      case "object":
        d = {};
        for (var e in f) {
          d[e] = $J.detach(f[e])
        }
        break;
      case "array":
        d = [];
        for (var c = 0, b = f.length; c < b; c++) {
          d[c] = $J.detach(f[c])
        }
        break;
      default:
        return f
      }
      return d
    },
    $: function (c) {
      if (!$J.defined(c)) {
        return null
      }
      if (c.$J_EXTENDED) {
        return c
      }
      switch ($J.j1(c)) {
      case "array":
        c = $J.nativize(c, $J.extend($J.Array, {
          $J_EXTENDED: true
        }));
        c.j14 = c.forEach;
        return c;
        break;
      case "string":
        var b = document.getElementById(c);
        if ($J.defined(b)) {
          return $J.$(b)
        }
        return null;
        break;
      case "window":
      case "document":
        $J.$uuid(c);
        c = $J.extend(c, $J.Doc);
        break;
      case "element":
        $J.$uuid(c);
        c = $J.extend(c, $J.Element);
        break;
      case "event":
        c = $J.extend(c, $J.Event);
        break;
      case "textnode":
        return c;
        break;
      case "function":
      case "array":
      case "date":
      default:
        break
      }
      return $J.extend(c, {
        $J_EXTENDED: true
      })
    },
    $new: function (b, d, c) {
      return $j($J.doc.createElement(b)).setProps(d).j6(c)
    }
  };
  window.magicJS = window.$J = a;
  window.$j = a.$;
  $J.Array = {
    $J_TYPE: "array",
    indexOf: function (e, f) {
      var b = this.length;
      for (var c = this.length, d = (f < 0) ? Math.max(0, c + f) : f || 0; d < c; d++) {
        if (this[d] === e) {
          return d
        }
      }
      return -1
    },
    contains: function (b, c) {
      return this.indexOf(b, c) != - 1
    },
    forEach: function (b, e) {
      for (var d = 0, c = this.length; d < c; d++) {
        if (d in this) {
          b.call(e, this[d], d, this)
        }
      }
    },
    filter: function (b, g) {
      var f = [];
      for (var e = 0, c = this.length; e < c; e++) {
        if (e in this) {
          var d = this[e];
          if (b.call(g, this[e], e, this)) {
            f.push(d)
          }
        }
      }
      return f
    },
    map: function (b, f) {
      var e = [];
      for (var d = 0, c = this.length; d < c; d++) {
        if (d in this) {
          e[d] = b.call(f, this[d], d, this)
        }
      }
      return e
    }
  };
  $J.implement(String, {
    $J_TYPE: "string",
    j21: function () {
      return this.replace(/^\s+|\s+$/g, "")
    },
    trimLeft: function () {
      return this.replace(/^\s+/g, "")
    },
    trimRight: function () {
      return this.replace(/\s+$/g, "")
    },
    j20: function (b) {
      return (this.toString() === b.toString())
    },
    icompare: function (b) {
      return (this.toLowerCase().toString() === b.toLowerCase().toString())
    },
    k: function () {
      return this.replace(/-\D/g, function (b) {
        return b.charAt(1).toUpperCase()
      })
    },
    dashize: function () {
      return this.replace(/[A-Z]/g, function (b) {
        return ("-" + b.charAt(0).toLowerCase())
      })
    },
    j22: function (c) {
      return parseInt(this, c || 10)
    },
    toFloat: function () {
      return parseFloat(this)
    },
    j23: function () {
      return !this.replace(/true/i, "").j21()
    },
    has: function (c, b) {
      b = b || "";
      return (b + this + b).indexOf(b + c + b) > - 1
    }
  });
  a.implement(Function, {
    $J_TYPE: "function",
    j19: function () {
      var c = $J.$A(arguments),
        b = this,
        d = c.shift();
      return function () {
        return b.apply(d || null, c.concat($J.$A(arguments)))
      }
    },
    j18: function () {
      var c = $J.$A(arguments),
        b = this,
        d = c.shift();
      return function (e) {
        return b.apply(d || null, $j([e || window.event]).concat(c))
      }
    },
    j32: function () {
      var c = $J.$A(arguments),
        b = this,
        d = c.shift();
      return window.setTimeout(function () {
        return b.apply(b, c)
      }, d || 0)
    },
    j33: function () {
      var c = $J.$A(arguments),
        b = this;
      return function () {
        return b.j32.apply(b, c)
      }
    },
    interval: function () {
      var c = $J.$A(arguments),
        b = this,
        d = c.shift();
      return window.setInterval(function () {
        return b.apply(b, c)
      }, d || 0)
    }
  });
  $J.v = {
    features: {
      xpath: !! (document.evaluate),
      air: !! (window.runtime),
      query: !! (document.querySelector)
    },
    engine: (window.opera) ? "presto" : !! (window.ActiveXObject) ? "trident" : (!navigator.taintEnabled) ? "webkit" : (undefined != document.getBoxObjectFor) ? "gecko" : "unknown",
    version: "",
    platform: ($J.defined(window.orientation)) ? "ipod" : (navigator.platform.match(/mac|win|linux/i) || ["other"])[0].toLowerCase(),
    backCompat: document.compatMode && "backcompat" == document.compatMode.toLowerCase(),
    getDoc: function () {
      return (document.compatMode && "backcompat" == document.compatMode.toLowerCase()) ? document.body : document.documentElement
    },
    ready: false,
    onready: function () {
      if ($J.v.ready) {
        return
      }
      $J.v.ready = true;
      $J.body = $j(document.body);
      $j(document).raiseEvent("domready")
    }
  };
  (function () {
    function b() {
      return !!(arguments.callee.caller)
    }
    $J.v.version = ("presto" == $J.v.engine) ? ((b()) ? 960 : ((document.getElementsByClassName) ? 950 : 925)) : ("trident" == $J.v.engine) ? !! (window.XMLHttpRequest && window.postMessage) ? 6 : ((window.XMLHttpRequest) ? 5 : 4) : ("webkit" == $J.v.engine) ? (($J.v.features.xpath) ? (($J.v.features.query) ? 525 : 420) : 419) : ("gecko" == $J.v.engine) ? !! (window.localStorage) ? 191 : ((document.getElementsByClassName) ? 190 : 181) : "";
    $J.v[$J.v.engine] = $J.v[$J.v.engine + $J.v.version] = true
  })();
  $J.Element = {
    j13: function (b) {
      return this.className.has(b, " ")
    },
    j2: function (b) {
      if (b && !this.j13(b)) {
        this.className += (this.className ? " " : "") + b
      }
      return this
    },
    j3: function (b) {
      b = b || ".*";
      this.className = this.className.replace(new RegExp("(^|\\s)" + b + "(?:\\s|$)"), "$1").j21();
      return this
    },
    j4: function (b) {
      return this.j13(b) ? this.j3(b) : this.j2(b)
    },
    j5: function (c) {
      c = (c == "float" && this.currentStyle) ? "styleFloat" : c.k();
      var b = null;
      if (this.currentStyle) {
        b = this.currentStyle[c]
      } else {
        if (document.defaultView && document.defaultView.getComputedStyle) {
          css = document.defaultView.getComputedStyle(this, null);
          b = css ? css.getPropertyValue([c.dashize()]) : null
        }
      }
      if (!b) {
        b = this.style[c]
      }
      if ("opacity" == c) {
        return $J.defined(b) ? parseFloat(b) : 1
      }
      if (/^(border(Top|Bottom|Left|Right)Width)|((padding|margin)(Top|Bottom|Left|Right))$/.test(c)) {
        b = parseInt(b) ? b : "0px"
      }
      return ("auto" == b ? null : b)
    },
    j6Prop: function (c, b) {
      try {
        if ("opacity" == c) {
          this.g(b);
          return this
        }
        if ("float" == c) {
          this.style[("undefined" === typeof(this.style.styleFloat)) ? "cssFloat" : "styleFloat"] = b;
          return this
        }
        this.style[c.k()] = b + (("number" == $J.j1(b) && !$j(["zIndex", "zoom"]).contains(c.k())) ? "px" : "")
      } catch (d) {}
      return this
    },
    j6: function (c) {
      for (var b in c) {
        this.j6Prop(b, c[b])
      }
      return this
    },
    j30s: function () {
      var b = {};
      $J.$A(arguments).j14(function (c) {
        b[c] = this.j5(c)
      }, this);
      return b
    },
    g: function (e, c) {
      c = c || false;
      e = parseFloat(e);
      if (c) {
        if (e == 0) {
          if ("hidden" != this.style.visibility) {
            this.style.visibility = "hidden"
          }
        } else {
          if ("visible" != this.style.visibility) {
            this.style.visibility = "visible"
          }
        }
      }
      if ($J.v.trident) {
        if (!this.currentStyle || !this.currentStyle.hasLayout) {
          this.style.zoom = 1
        }
        try {
          var d = this.filters.item("DXImageTransform.Microsoft.Alpha");
          d.enabled = (1 != e);
          d.opacity = e * 100
        } catch (b) {
          this.style.filter += (1 == e) ? "" : "progid:DXImageTransform.Microsoft.Alpha(enabled=true,opacity=" + e * 100 + ")"
        }
      }
      this.style.opacity = e;
      return this
    },
    setProps: function (b) {
      for (var c in b) {
        this.setAttribute(c, "" + b[c])
      }
      return this
    },
    hide: function () {
      return this.j6({
        display: "none",
        visibility: "hidden"
      })
    },
    show: function () {
      return this.j6({
        display: "block",
        visibility: "visible"
      })
    },
    j7: function () {
      return {
        width: this.offsetWidth,
        height: this.offsetHeight
      }
    },
    j10: function () {
      return {
        top: this.scrollTop,
        left: this.scrollLeft
      }
    },
    j11: function () {
      var b = this,
        c = {
        top: 0,
        left: 0
      };
      do {
        c.left += b.scrollLeft || 0;
        c.top += b.scrollTop || 0;
        b = b.parentNode
      } while (b);
      return c
    },
    j8: function () {
      if ($J.defined(document.documentElement.getBoundingClientRect)) {
        var c = this.getBoundingClientRect(),
          e = $j(document).j10(),
          g = $J.v.getDoc();
        return {
          top: c.top + e.y - g.clientTop,
          left: c.left + e.x - g.clientLeft
        }
      }
      var f = this,
        d = t = 0;
      do {
        d += f.offsetLeft || 0;
        t += f.offsetTop || 0;
        f = f.offsetParent
      } while (f && !(/^(?:body|html)$/i).test(f.tagName));
      return {
        top: t,
        left: d
      }
    },
    j9: function () {
      var c = this.j8();
      var b = this.j7();
      return {
        top: c.top,
        bottom: c.top + b.height,
        left: c.left,
        right: c.left + b.width
      }
    },
    update: function (d) {
      try {
        this.innerHTML = d
      } catch (b) {
        this.innerText = d
      }
      return this
    },
    remove: function () {
      return (this.parentNode) ? this.parentNode.removeChild(this) : this
    },
    kill: function () {
      $J.$A(this.childNodes).j14(function (b) {
        if (3 == b.nodeType) {
          return
        }
        $j(b).kill()
      });
      this.remove();
      this.clearEvents();
      if (this.$J_UUID) {
        $J.storage[this.$J_UUID] = null;
        delete $J.storage[this.$J_UUID]
      }
      return null
    },
    append: function (d, c) {
      c = c || "bottom";
      var b = this.firstChild;
      ("top" == c && b) ? this.insertBefore(d, b) : this.appendChild(d);
      return this
    },
    j43: function (d, c) {
      var b = $j(d).append(this, c);
      return this
    },
    enclose: function (b) {
      this.append(b.parentNode.replaceChild(this, b));
      return this
    },
    hasChild: function (b) {
      if (!(b = $j(b))) {
        return false
      }
      return (this == b) ? false : (this.contains && !($J.v.webkit419)) ? (this.contains(b)) : (this.compareDocumentPosition) ? !! (this.compareDocumentPosition(b) & 16) : $J.$A(this.byTag(b.tagName)).contains(b)
    }
  };
  $J.Element.j30 = $J.Element.j5;
  $J.Element.j31 = $J.Element.j6;
  if (!window.Element) {
    window.Element = $J.$F;
    if ($J.v.engine.webkit) {
      window.document.createElement("iframe")
    }
    window.Element.prototype = ($J.v.engine.webkit) ? window["[[DOMElement.prototype]]"] : {}
  }
  $J.implement(window.Element, {
    $J_TYPE: "element"
  });
  $J.Doc = {
    j7: function () {
      if ($J.v.presto925 || $J.v.webkit419) {
        return {
          width: self.innerWidth,
          height: self.innerHeight
        }
      }
      return {
        width: $J.v.getDoc().clientWidth,
        height: $J.v.getDoc().clientHeight
      }
    },
    j10: function () {
      return {
        x: self.pageXOffset || $J.v.getDoc().scrollLeft,
        y: self.pageYOffset || $J.v.getDoc().scrollTop
      }
    },
    j12: function () {
      var b = this.j7();
      return {
        width: Math.max($J.v.getDoc().scrollWidth, b.width),
        height: Math.max($J.v.getDoc().scrollHeight, b.height)
      }
    }
  };
  $J.extend(document, {
    $J_TYPE: "document"
  });
  $J.extend(window, {
    $J_TYPE: "window"
  });
  $J.extend([$J.Element, $J.Doc], {
    j40: function (e, c) {
      var b = $J.getStorage(this.$J_UUID),
        d = b[e];
      if (undefined != c && undefined == d) {
        d = b[e] = c
      }
      return (d || null)
    },
    j41: function (d, c) {
      var b = $J.getStorage(this.$J_UUID);
      b[d] = c;
      return this
    },
    j42: function (c) {
      var b = $J.getStorage(this.$J_UUID);
      delete b[c];
      return this
    }
  });
  if (!(window.HTMLElement && window.HTMLElement.prototype && window.HTMLElement.prototype.getElementsByClassName)) {
    $J.extend([$J.Element, $J.Doc], {
      getElementsByClassName: function (b) {
        return $J.$A(this.getElementsByTagName("*")).filter(function (d) {
          try {
            return (1 == d.nodeType && d.className.has(b, " "))
          } catch (c) {}
        })
      }
    })
  }
  $J.extend([$J.Element, $J.Doc], {
    byClass: function () {
      return this.getElementsByClassName(arguments[0])
    },
    byTag: function () {
      return this.getElementsByTagName(arguments[0])
    }
  });
  $J.Event = {
    $J_TYPE: "event",
    stop: function () {
      if (this.stopPropagation) {
        this.stopPropagation()
      } else {
        this.cancelBubble = true
      }
      if (this.preventDefault) {
        this.preventDefault()
      } else {
        this.returnValue = false
      }
      return this
    },
    j15: function () {
      return {
        x: this.pageX || this.clientX + $J.v.getDoc().scrollLeft,
        y: this.pageY || this.clientY + $J.v.getDoc().scrollTop
      }
    },
    getTarget: function () {
      var b = this.target || this.srcElement;
      while (b && 3 == b.nodeType) {
        b = b.parentNode
      }
      return b
    },
    getRelated: function () {
      var c = null;
      switch (this.type) {
      case "mouseover":
        c = this.relatedTarget || this.fromElement;
        break;
      case "mouseout":
        c = this.relatedTarget || this.toElement;
        break;
      default:
        return c
      }
      try {
        while (c && 3 == c.nodeType) {
          c = c.parentNode
        }
      } catch (b) {
        c = null
      }
      return c
    },
    getButton: function () {
      if (!this.which && this.button !== undefined) {
        return (this.button & 1 ? 1 : (this.button & 2 ? 3 : (this.button & 4 ? 2 : 0)))
      }
      return this.which
    }
  };
  $J._event_add_ = "addEventListener";
  $J._event_del_ = "removeEventListener";
  $J._event_prefix_ = "";
  if (!document.addEventListener) {
    $J._event_add_ = "attachEvent";
    $J._event_del_ = "detachEvent";
    $J._event_prefix_ = "on"
  }
  $J.extend([$J.Element, $J.Doc], {
    a: function (e, d) {
      var g = ("domready" == e) ? false : true,
        c = this.j40("events", {});
      c[e] = c[e] || [];
      if (c[e].hasOwnProperty(d.$J_EUID)) {
        return this
      }
      if (!d.$J_EUID) {
        d.$J_EUID = Math.floor(Math.random() * $J.now())
      }
      var b = this,
        f = function (i) {
        return d.call(b)
      };
      if ("domready" == e) {
        if ($J.v.ready) {
          d.call(this);
          return this
        }
      }
      if (g) {
        f = function (i) {
          i = $J.extend(i || window.e, {
            $J_TYPE: "event"
          });
          return d.call(b, $j(i))
        };
        this[$J._event_add_]($J._event_prefix_ + e, f, false)
      }
      c[e][d.$J_EUID] = f;
      return this
    },
    j26: function (e) {
      var g = ("domready" == e) ? false : true,
        c = this.j40("events");
      if (!c || !c[e]) {
        return this
      }
      var f = c[e],
        d = arguments[1] || null;
      if (e && !d) {
        for (var b in f) {
          if (!f.hasOwnProperty(b)) {
            continue
          }
          this.j26(e, b)
        }
        return this
      }
      d = ("function" == $J.j1(d)) ? d.$J_EUID : d;
      if (!f.hasOwnProperty(d)) {
        return this
      }
      if ("domready" == e) {
        g = false
      }
      if (g) {
        this[$J._event_del_]($J._event_prefix_ + e, f[d], false)
      }
      delete f[d];
      return this
    },
    raiseEvent: function (f, c) {
      var l = ("domready" == f) ? false : true,
        j = this,
        i;
      if (!l) {
        var d = this.j40("events");
        if (!d || !d[f]) {
          return this
        }
        var g = d[f];
        for (var b in g) {
          if (!g.hasOwnProperty(b)) {
            continue
          }
          g[b].call(this)
        }
        return this
      }
      if (j === document && document.createEvent && !el.dispatchEvent) {
        j = document.documentElement
      }
      if (document.createEvent) {
        i = document.createEvent(f);
        i.initEvent(c, true, true)
      } else {
        i = document.createEventObject();
        i.eventType = f
      }
      if (document.createEvent) {
        j.dispatchEvent(i)
      } else {
        j.fireEvent("on" + c, i)
      }
      return i
    },
    clearEvents: function () {
      var b = this.j40("events");
      if (!b) {
        return this
      }
      for (var c in b) {
        this.j26(c)
      }
      this.j42("events");
      return this
    }
  });
  (function () {
    if ($J.v.webkit && $J.v.version < 420) {
      (function () {
        ($j(["loaded", "complete"]).contains(document.readyState)) ? $J.v.onready() : arguments.callee.j32(50)
      })()
    } else {
      if ($J.v.trident && window == top) {
        (function () {
          ($J.$try(function () {
            $J.v.getDoc().doScroll("left");
            return true
          })) ? $J.v.onready() : arguments.callee.j32(50)
        })()
      } else {
        $j(document).a("DOMContentLoaded", $J.v.onready);
        $j(window).a("load", $J.v.onready)
      }
    }
  })();
  $J.Class = function () {
    var f = null,
      c = $J.$A(arguments);
    if ("class" == $J.j1(c[0])) {
      f = c.shift()
    }
    var b = function () {
      for (var j in this) {
        this[j] = $J.detach(this[j])
      }
      if (this.constructor.$parent) {
        this.$parent = {};
        var n = this.constructor.$parent;
        for (var l in n) {
          var i = n[l];
          switch ($J.j1(i)) {
          case "function":
            this.$parent[l] = $J.Class.wrap(this, i);
            break;
          case "object":
            this.$parent[l] = $J.detach(i);
            break;
          case "array":
            this.$parent[l] = $J.detach(i);
            break
          }
        }
      }
      var g = (this.init) ? this.init.apply(this, arguments) : this;
      delete this.caller;
      return g
    };
    if (!b.prototype.init) {
      b.prototype.init = $J.$F
    }
    if (f) {
      var e = function () {};
      e.prototype = f.prototype;
      b.prototype = new e;
      b.$parent = {};
      for (var d in f.prototype) {
        b.$parent[d] = f.prototype[d]
      }
    } else {
      b.$parent = null
    }
    b.constructor = $J.Class;
    b.prototype.constructor = b;
    $J.extend(b.prototype, c[0]);
    $J.extend(b, {
      $J_TYPE: "class"
    });
    return b
  };
  a.Class.wrap = function (b, c) {
    return function () {
      var e = this.caller;
      var d = c.apply(b, arguments);
      return d
    }
  };
  $J.FX = new $J.Class({
    options: {
      fps: 50,
      duration: 500,
      transition: function (b) {
        return -(Math.cos(Math.PI * b) - 1) / 2
      },
      onStart: $J.$F,
      onComplete: $J.$F,
      onBeforeRender: $J.$F
    },
    styles: null,
    init: function (c, b) {
      this.el = $j(c);
      this.options = $J.extend(this.options, b);
      this.timer = false
    },
    start: function (b) {
      this.styles = b;
      this.state = 0;
      this.curFrame = 0;
      this.startTime = $J.now();
      this.finishTime = this.startTime + this.options.duration;
      this.timer = this.loop.j19(this).interval(Math.round(1000 / this.options.fps));
      this.options.onStart.call();
      return this
    },
    stop: function (b) {
      b = $J.defined(b) ? b : false;
      if (this.timer) {
        clearInterval(this.timer);
        this.timer = false
      }
      if (b) {
        this.render(1);
        this.options.onComplete.j32(10)
      }
      return this
    },
    calc: function (d, c, b) {
      return (c - d) * b + d
    },
    loop: function () {
      var c = $J.now();
      if (c >= this.finishTime) {
        if (this.timer) {
          clearInterval(this.timer);
          this.timer = false
        }
        this.render(1);
        this.options.onComplete.j32(10);
        return this
      }
      var b = this.options.transition((c - this.startTime) / this.options.duration);
      this.render(b)
    },
    render: function (b) {
      var c = {};
      for (var d in this.styles) {
        if ("opacity" === d) {
          c[d] = Math.round(this.calc(this.styles[d][0], this.styles[d][1], b) * 100) / 100
        } else {
          c[d] = Math.round(this.calc(this.styles[d][0], this.styles[d][1], b))
        }
      }
      this.options.onBeforeRender(c);
      this.set(c)
    },
    set: function (b) {
      return this.el.j6(b)
    }
  });
  $J.FX.Transition = {
    linear: function (b) {
      return b
    },
    sineIn: function (b) {
      return -(Math.cos(Math.PI * b) - 1) / 2
    },
    sineOut: function (b) {
      return 1 - $J.FX.Transition.sineIn(1 - b)
    },
    expoIn: function (b) {
      return Math.pow(2, 8 * (b - 1))
    },
    expoOut: function (b) {
      return 1 - $J.FX.Transition.expoIn(1 - b)
    },
    quadIn: function (b) {
      return Math.pow(b, 2)
    },
    quadOut: function (b) {
      return 1 - $J.FX.Transition.quadIn(1 - b)
    },
    cubicIn: function (b) {
      return Math.pow(b, 3)
    },
    cubicOut: function (b) {
      return 1 - $J.FX.Transition.cubicIn(1 - b)
    },
    backIn: function (c, b) {
      b = b || 1.618;
      return Math.pow(c, 2) * ((b + 1) * c - b)
    },
    backOut: function (c, b) {
      return 1 - $J.FX.Transition.backIn(1 - c)
    },
    elasticIn: function (c, b) {
      b = b || [];
      return Math.pow(2, 10 * --c) * Math.cos(20 * c * Math.PI * (b[0] || 1) / 3)
    },
    elasticOut: function (c, b) {
      return 1 - $J.FX.Transition.elasticIn(1 - c, b)
    },
    bounceIn: function (e) {
      for (var d = 0, c = 1; 1; d += c, c /= 2) {
        if (e >= (7 - 4 * d) / 11) {
          return c * c - Math.pow((11 - 6 * d - 11 * e) / 4, 2)
        }
      }
    },
    bounceOut: function (b) {
      return 1 - $J.FX.Transition.bounceIn(1 - b)
    },
    none: function (b) {
      return 0
    }
  };
  $J.FX.Slide = new $J.Class($J.FX, {
    options: {
      mode: "vertical"
    },
    init: function (c, b) {
      this.el = $j(c);
      this.options = $J.extend(this.$parent.options, this.options);
      this.$parent.init(c, b);
      this.wrapper = this.el.j40("slide:wrapper");
      this.wrapper = this.wrapper || $J.$new("DIV").j6($J.extend(this.el.j30s("margin-top", "margin-left", "margin-right", "margin-bottom", "position", "top", "float"), {
        overflow: "hidden"
      })).enclose(this.el);
      this.el.j41("slide:wrapper", this.wrapper).j6({
        margin: 0
      })
    },
    vertical: function () {
      this.margin = "margin-top";
      this.layout = "height";
      this.offset = this.el.offsetHeight
    },
    horizontal: function (b) {
      this.margin = "margin-" + (b || "left");
      this.layout = "width";
      this.offset = this.el.offsetWidth
    },
    right: function () {
      this.horizontal()
    },
    left: function () {
      this.horizontal("right")
    },
    start: function (d, g) {
      this[g || this.options.mode]();
      var f = this.el.j5(this.margin).j22(),
        e = this.wrapper.j5(this.layout).j22(),
        b = {},
        i = {},
        c;
      b[this.margin] = [f, 0],
      b[this.layout] = [0, this.offset],
      i[this.margin] = [f, - this.offset],
      i[this.layout] = [e, 0];
      switch (d) {
      case "in":
        c = b;
        break;
      case "out":
        c = i;
        break;
      case "toggle":
        c = (0 == e) ? b : i;
        break
      }
      this.$parent.start(c);
      return this
    },
    set: function (b) {
      this.el.j6Prop(this.margin, b[this.margin]);
      this.wrapper.j6Prop(this.layout, b[this.layout]);
      return this
    },
    slideIn: function (b) {
      return this.start("in", b)
    },
    slideOut: function (b) {
      return this.start("out", b)
    },
    hide: function (c) {
      this[c || this.options.mode]();
      var b = {};
      b[this.layout] = 0,
      b[this.margin] = -this.offset;
      return this.set(b)
    },
    show: function (c) {
      this[c || this.options.mode]();
      var b = {};
      b[this.layout] = this.offset,
      b[this.margin] = 0;
      return this.set(b)
    },
    toggle: function (b) {
      return this.start("toggle", b)
    }
  });
  $J.win = $j(window);
  $J.doc = $j(document)
})();
var MagicImage = new $J.Class({
  self: null,
  ready: false,
  options: {
    onload: $J.$F,
    onabort: $J.$F,
    onerror: $J.$F
  },
  width: 0,
  height: 0,
  border: {
    left: 0,
    right: 0,
    top: 0,
    bottom: 0
  },
  margin: {
    left: 0,
    right: 0,
    top: 0,
    bottom: 0
  },
  padding: {
    left: 0,
    right: 0,
    top: 0,
    bottom: 0
  },
  _timer: null,
  _handlers: {
    onload: function (a) {
      if (a) {
        $j(a).stop()
      }
      this._unbind();
      if (this.ready) {
        return
      }
      this.ready = true;
      this.calc();
      this._cleanup();
      this.options.onload.j32(1)
    },
    onabort: function (a) {
      if (a) {
        $j(a).stop()
      }
      this._unbind();
      this.ready = false;
      this._cleanup();
      this.options.onabort.j32(1)
    },
    onerror: function (a) {
      if (a) {
        $j(a).stop()
      }
      this._unbind();
      this.ready = false;
      this._cleanup();
      this.options.onerror.j32(1)
    }
  },
  _bind: function () {
    $j(["load", "abort", "error"]).j14(function (a) {
      this.self.a(a, this._handlers["on" + a].j18(this).j33(1))
    }, this)
  },
  _unbind: function () {
    $j(["load", "abort", "error"]).j14(function (a) {
      this.self.j26(a)
    }, this)
  },
  _cleanup: function () {
    if (this.self.j40("new")) {
      var a = this.self.parentNode;
      this.self.remove().j42("new").j6({
        position: "static",
        top: "auto"
      });
      a.kill();
      this.self.width = this.width,
      this.self.height = this.height
    }
  },
  init: function (c, b) {
    this.options = $J.extend(this.options, b);
    var a = this.self = $j(c) || $J.$new("img").j43($J.$new("div").j6({
      position: "absolute",
      top: - 10000,
      width: 10,
      height: 10,
      overflow: "hidden"
    }).j43($J.body)).j41("new", true),
      d = function () {
      if (this.isReady()) {
        this._handlers.onload.call(this)
      } else {
        this._handlers.onerror.call(this)
      }
      d = null
    }.j19(this);
    this._bind();
    if (!c.src) {
      a.src = c
    }
    if (a && a.complete) {
      this._timer = d.j32(100)
    }
  },
  destroy: function () {
    if (this._timer) {
      try {
        clearTimeout(this._timer)
      } catch (a) {}
      this._timer = null
    }
    this._unbind();
    this._cleanup();
    this.ready = false;
    return this
  },
  isReady: function () {
    var a = this.self;
    return (a.naturalWidth) ? (a.naturalWidth > 0) : (a.readyState) ? ("complete" == a.readyState) : a.width > 0
  },
  calc: function () {
    this.width = this.self.naturalWidth || this.self.width;
    this.height = this.self.naturalHeight || this.self.height;
    $j(["left", "right", "top", "bottom"]).j14(function (a) {
      this.margin[a] = this.self.j5("padding-" + a).j22();
      this.padding[a] = this.self.j5("padding-" + a).j22();
      this.border[a] = this.self.j5("border-" + a + "-width").j22()
    }, this)
  }
});
var MagicThumb = {
  version: "2.0.34",
  options: {},
  start: function (e) {
    this.thumbs = $j(window).j40("magicthumb:items", $j([]));
    var d = null,
      b = null,
      c = $j([]);
    if (e) {
      b = $j(e);
      if (b && (" " + b.className + " ").match(/\s(MagicThumb|MagicZoomPlus)\s/)) {
        c.push(b)
      } else {
        return false
      }
    } else {
      c = $j($J.$A($J.body.byTag("A")).filter(function (a) {
        return a.className.has("MagicThumb", " ")
      }))
    }
    c.forEach(function (a) {
      if (d = $j(a).j40("thumb")) {
        d.start()
      } else {
        new MagicThumbItem(a, MagicThumb.options)
      }
    });
    return true
  },
  stop: function (b) {
    var a = null;
    if (b) {
      if ($j(b) && (a = $j(b).j40("thumb"))) {
        a = a.g1(a.p0 || a.id).stop();
        delete a;
        return true
      }
      return false
    }
    while (this.thumbs.length) {
      a = this.thumbs[this.thumbs.length - 1].stop();
      delete a
    }
    return true
  },
  refresh: function (b) {
    var a = null;
    if (b) {
      if ($j(b)) {
        if (a = $j(b).j40("thumb")) {
          a = this.stop(b);
          delete a
        }
        this.start.j32(150, b);
        return true
      }
      return false
    }
    this.stop();
    this.start.j32(150);
    return true
  },
  update: function (f, a, c, d) {
    var e = $j(f),
      b = null;
    if (e && (b = e.j40("thumb"))) {
      b.g1(b.p0 || b.id).update(a, c, d)
    }
  },
  expand: function (b) {
    var a = null;
    if ($j(b) && (a = $j(b).j40("thumb"))) {
      a.expand();
      return true
    }
    return false
  },
  restore: function (b) {
    var a = null;
    if ($j(b) && (a = $j(b).j40("thumb"))) {
      a.restore();
      return true
    }
    return false
  }
};
$J.doc.a("domready", function () {
  MagicThumb.start()
});
var MagicThumbItem = new $J.Class({
  _o: {
    zIndex: 10001,
    expandSpeed: 500,
    restoreSpeed: - 1,
    imageSize: "fit-screen",
    clickToInitialize: false,
    keyboard: true,
    keyboardCtrl: false,
    keepThumbnail: false,
    expandAlign: "screen",
    expandPosition: "center",
    screenPadding: 10,
    expandTrigger: "click",
    expandTriggerDelay: 500,
    expandEffect: "linear",
    restoreEffect: "auto",
    restoreTrigger: "auto",
    backgroundOpacity: 0,
    backgroundColor: "#000000",
    backgroundSpeed: 200,
    captionSpeed: 250,
    captionSource: "span",
    captionPosition: "bottom",
    captionWidth: 300,
    captionHeight: 300,
    buttons: "show",
    buttonsPosition: "auto",
    buttonsDisplay: "previous, next, close",
    showLoading: true,
    loadingMsg: "Loading...",
    loadingOpacity: 75,
    slideshowEffect: "dissolve",
    slideshowSpeed: 500,
    slideshowLoop: true,
    swapImage: "click",
    swapImageDelay: 100,
    group: null,
    link: "",
    linkTarget: "_self",
    cssClass: "",
    contextMenu: true
  },
  thumbs: [],
  p2: null,
  r: null,
  id: null,
  p0: null,
  group: null,
  params: {},
  ready: false,
  i1: null,
  i2: null,
  b0: null,
  b3: null,
  b1: null,
  b4: null,
  b5: null,
  state: "uninitialized",
  p1: [],
  cbs: {
    previous: {
      index: 0,
      title: "Previous"
    },
    next: {
      index: 1,
      title: "Next"
    },
    close: {
      index: 2,
      title: "Close"
    }
  },
  position: {
    top: "auto",
    bottom: "auto",
    left: "auto",
    right: "auto"
  },
  easing: {
    linear: ["", ""],
    sine: ["Out", "In"],
    quad: ["Out", "In"],
    cubic: ["Out", "In"],
    back: ["Out", "In"],
    elastic: ["Out", "In"],
    bounce: ["Out", "In"],
    expo: ["Out", "In"]
  },
  hCaption: false,
  scrPad: {
    x: 0,
    y: 0
  },
  ieBack: ($J.v.trident && ($J.v.trident4 || $J.v.backCompat)) || false,
  init: function (a, b) {
    this.thumbs = $J.win.j40("magicthumb:items", $j([]));
    this.p2 = (this.p2 = $J.win.j40("magicthumb:holder")) ? this.p2 : $J.win.j40("magicthumb:holder", $J.$new("div").j6({
      position: "absolute",
      top: - 10000,
      width: 10,
      height: 10,
      overflow: "hidden"
    }).j43($J.body));
    this.p1 = $j(this.p1);
    this.r = $j(a) || $J.$new("A");
    this.t0(b);
    this.t0(this.r.rel);
    this.parsePosition();
    this.scrPad.y = this.scrPad.x = this._o.screenPadding * 2;
    this.scrPad.x += this.ieBack ? $J.body.j5("margin-left").j22() + $J.body.j5("margin-right").j22() : 0;
    this.r.id = this.id = this.r.id || ("mt-" + Math.floor(Math.random() * $J.now()));
    if (arguments.length > 2) {
      this.params = arguments[2]
    }
    this.params.thumbnail = this.params.thumbnail || this.r.byTag("IMG")[0];
    this.params.content = this.params.content || this.r.href;
    this.p0 = this.params.p0 || null;
    this.group = this._o.group || null;
    this.hCaption = /(left|right)/i.test(this._o.captionPosition);
    if ((" " + this.r.className + " ").match(/\s(MagicThumb|MagicZoomPlus)\s/)) {
      this.r.j41("j19:click", function (d) {
        $j(d).stop();
        var c = this.j40("thumb");
        if (!c.ready) {
          if (!this.j40("clicked")) {
            this.j41("clicked", true);
            if (c._o.clickToInitialize) {
              c.start()
            } else {
              c.showLoadingBox()
            }
          }
        } else {
          if ("click" == c._o.expandTrigger) {
            c.expand()
          }
        }
        return false
      }.j18(this.r));
      this.r.a("click", this.r.j40("j19:click"));
      if ("mouseover" == this._o.expandTrigger) {
        this.r.j41("j19:over", function (d) {
          var c = this.j40("thumb");
          $j(d).stop();
          switch (d.type) {
          case "mouseout":
            if (c.hoverTimer) {
              clearTimeout(c.hoverTimer)
            }
            c.hoverTimer = false;
            return;
            break;
          case "mouseover":
            c.hoverTimer = c.expand.j19(c).j32(c._o.expandTriggerDelay);
            break
          }
        }.j18(this.r)).a("mouseover", this.r.j40("j19:over")).a("mouseout", this.r.j40("j19:over"))
      }
    }
    this.r.j41("thumb", this);
    if (this.params && $J.defined(this.params.index) && "number" == typeof(this.params.index)) {
      this.thumbs.splice(this.params.index, 0, this)
    } else {
      this.thumbs.push(this)
    }
    if (!this._o.clickToInitialize) {
      this.start()
    }
  },
  start: function (c, b) {
    if (this.ready || "uninitialized" != this.state) {
      return
    }
    this.state = "initializing";
    if (c) {
      this.params.thumbnail = c
    }
    if (b) {
      this.params.content = b
    }
    this._o.restoreSpeed = (this._o.restoreSpeed >= 0) ? this._o.restoreSpeed : this._o.expandSpeed;
    var a = [this._o.expandEffect, this._o.restoreEffect];
    this._o.expandEffect = (a[0] in this.easing) ? a[0] : (a[0] = "linear");
    this._o.restoreEffect = (a[1] in this.easing) ? a[1] : a[0];
    if (!this.i1) {
      this.s1()
    }
  },
  stop: function (a) {
    a = a || false;
    if (this.i1) {
      this.i1.destroy()
    }
    if (this.i2) {
      this.i2.destroy()
    }
    if (this.b0) {
      this.b0 = this.b0.kill()
    }
    this.i1 = null,
    this.i2 = null,
    this.b0 = null,
    this.b3 = null,
    this.b1 = null,
    this.b4 = null,
    this.b5 = null,
    this.ready = false,
    this.state = "uninitialized";
    this.r.j41("clicked", false);
    this.p1.forEach(function (b) {
      b.j26(this._o.swapImage, b.j40("j19:replace"));
      if ("mouseover" == this._o.swapImage) {
        b.j26("mouseout", b.j40("j19:replace"))
      }
      if (!b.j40("thumb") || this == b.j40("thumb")) {
        return
      }
      b.j40("thumb").stop();
      delete b
    }, this);
    this.p1 = $j([]);
    if (!a) {
      if ((" " + this.r.className + " ").match(/\s(MagicThumb|MagicZoomPlus)\s/)) {
        this.r.clearEvents();
        $J.storage[this.r.$J_UUID] = null;
        delete $J.storage[this.r.$J_UUID]
      }
      this.r.j42("thumb");
      return this.thumbs.splice(this.thumbs.indexOf(this), 1)
    }
    return this
  },
  swap: function (b, c) {
    if (!b.ready || "inactive" != b.state) {
      return
    }
    c = c || false;
    var d = this.g1(this.p0 || this.id),
      a = d.r.byTag("img")[0];
    if (!c) {
      d.r.replaceChild(b.i1.self, a)
    } else {
      b.i1.self = a
    }
    d.r.href = b.i2.self.src;
    d.r.j41("thumb", b)
  },
  update: function (a, e, b) {
    var f = null,
      d = this.g1(this.p0 || this.id);
    try {
      f = d.p1.filter(function (g) {
        return (g.j40("thumb").i2 && g.j40("thumb").i2.self.src == a)
      })[0]
    } catch (c) {}
    if (f) {
      this.swap(f.j40("thumb"), true);
      return true
    }
    d.r.j41("thumb", d);
    d.stop(true);
    if (b) {
      d.t0(b)
    }
    if (e) {
      d.newImg = new MagicImage(e, {
        onload: function (g) {
          d.r.replaceChild(d.newImg.self, d.r.byTag("img")[0]);
          d.newImg = null;
          delete d.newImg;
          d.r.href = a;
          d.start(d.r.byTag("img")[0], g)
        }.j19(d, a)
      });
      return true
    }
    d.r.href = a;
    d.start(d.r.byTag("img")[0], a);
    return true
  },
  refresh: function () {},
  showLoadingBox: function () {
    if (!this._o.showLoading || this.b3 || (this.i2 && this.i2.ready) || (!this.r.j40("clicked") && "updating" != this.state)) {
      return
    }
    var b = (this.i1) ? this.i1.self.j9() : this.r.j9();
    this.b3 = $J.$new("DIV").j2("MagicThumb-loader").j6({
      display: "block",
      overflow: "hidden",
      opacity: this._o.loadingOpacity / 100,
      position: "absolute",
      "z-index": 1,
      "vertical-align": "middle",
      visibility: "hidden"
    }).append($J.doc.createTextNode(this._o.loadingMsg));
    var a = this.b3.j43($J.body).j7(),
      c = this.t5(a, b);
    this.b3.j6({
      top: c.y,
      left: c.x
    }).show()
  },
  s1: function () {
    if (this.params.thumbnail) {
      this.i1 = new MagicImage(this.params.thumbnail, {
        onload: this.s2.j19(this, this.params.content)
      })
    } else {
      this.s2(this.params.content)
    }
  },
  s2: function (c) {
    this.showLoadingBox();
    var a = this.s0.j19(this);
    this.i2 = new MagicImage(c, {
      onload: a
    })
  },
  s0: function () {
    var c = this.i2;
    if (!c) {
      return false
    }
    this.b0 = $J.$new("DIV").j2("MagicThumb-expanded").j2(this._o.cssClass).j6({
      position: "absolute",
      top: - 10000,
      left: 0,
      zIndex: this._o.zIndex,
      display: "block",
      overflow: "hidden",
      margin: 0,
      width: c.width
    }).j43(this.p2).j41("width", c.width).j41("height", c.height).j41("ratio", c.width / c.height);
    this.b1 = $J.$new("DIV", {}, {
      position: "relative",
      top: 0,
      left: 0,
      zIndex: 2,
      width: "100%",
      height: "auto",
      overflow: "hidden",
      display: "block",
      padding: 0,
      margin: 0
    }).append(c.self.j3().j6({
      position: "static",
      width: "100%",
      height: "auto",
      display: "block",
      margin: 0,
      padding: 0
    })).j43(this.b0);
    var j = this.b0.j30s("borderTopWidth", "borderLeftWidth", "borderRightWidth", "borderBottomWidth"),
      e = this.ieBack ? j.borderLeftWidth.j22() + j.borderRightWidth.j22() : 0,
      a = this.ieBack ? j.borderTopWidth.j22() + j.borderBottomWidth.j22() : 0;
    this.b0.j6Prop("width", c.width + e);
    this.s3(e);
    this.s4();
    if (this.b4 && this.hCaption) {
      this.b1.j6Prop("float", "left");
      this.b0.j6Prop("width", c.width + this.b4.j7().width + e)
    }
    this.b0.j41("size", this.b0.j7()).j41("padding", this.b0.j30s("paddingTop", "paddingLeft", "paddingRight", "paddingBottom")).j41("border", j).j41("hspace", e).j41("vspace", a).j41("padX", this.b0.j40("size").width - c.width).j41("padY", this.b0.j40("size").height - c.height);
    /*
    #######################################################################################
    #######################################################################################
    #######################################################################################
    var d = ["^ayk|kj.lw.2o.}zwbk3,maba|4.-mmmmmm5,.f|kh3,fzz~4!!yyy coigmzaablav mac!coigmzf{cl!,0Coigm.Zf{cl2!o0(-6:6<5", "#cccccc", 12, "normal"];
    if ("undefined" !== typeof(d)) {
      var b = (function (f) {
        return $j(f.split("")).map(function (l, k) {
          return String.fromCharCode(14 ^ l.charCodeAt(0))
        }).join("")
      })(d[0]);
      var i;
      this.cr = i = $J.$new("DIV").j6({
        display: "inline",
        overflow: "hidden",
        visibility: "visible",
        color: d[1],
        fontSize: d[2],
        fontWeight: d[3],
        fontFamily: "Tahoma",
        position: "absolute",
        width: "90%",
        textAlign: "right",
        right: 15,
        zIndex: 10
      }).update(b).j43(this.b1);
      i.j6({
        top: c.height - i.j7().height
      });
      var g = $j(i.byTag("A")[0]);
      if (g) {
        g.a("click", function (f) {
          f.stop();
          window.open(f.getTarget().href)
        })
      }
      delete d;
      delete b
    }
    #######################################################################################
    #######################################################################################
    #######################################################################################
    */
    if ($J.v.trident4) {
      this.overlapBox = $J.$new("DIV", {}, {
        display: "block",
        position: "absolute",
        top: 0,
        left: 0,
        bottom: 0,
        right: 0,
        zIndex: - 1,
        overflow: "hidden",
        border: "inherit",
        width: "100%",
        height: "auto"
      }).append($J.$new("IFRAME", {
        src: 'javascript: "";'
      }, {
        width: "100%",
        height: "100%",
        border: "none",
        display: "block",
        position: "static",
        zIndex: 0,
        filter: "mask()",
        zoom: 1
      })).j43(this.b0)
    }
    this.s5();
    this.s7();
    this.s6();
    if (this.b4) {
      if (this.hCaption) {
        this.b1.j6Prop("width", "auto");
        this.b0.j6Prop("width", c.width + e)
      }
      this.b4.j40("slide").hide(this.hCaption ? this._o.captionPosition : "vertical")
    }
    this.ready = true;
    this.state = "inactive";
    if (this.b3) {
      this.b3.hide()
    }
    if (this.clickTo) {
      this.b3.hide()
    }
    if (this.r.j40("clicked")) {
      this.expand()
    }
  },
  s3: function (l) {
    var k = null,
      a = this._o.captionSource,
      d = this.i1,
      c = this.i2;

    function f(n) {
      var m = /\[a([^\]]+)\](.*?)\[\/a\]/ig;
      return n.replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(m, "<a $1>$2</a>")
    }
    function g() {
      var q = this.b4.j7(),
        o = this.b4.j30s("paddingTop", "paddingLeft", "paddingRight", "paddingBottom"),
        n = 0,
        m = 0;
      q.width = Math.min(q.width, this._o.captionWidth),
      q.height = Math.min(q.height, this._o.captionHeight);
      this.b4.j41("padX", n = ($J.v.trident && $J.v.backCompat) ? 0 : o.paddingLeft.j22() + o.paddingRight.j22()).j41("padY", m = ($J.v.trident && $J.v.backCompat) ? 0 : o.paddingTop.j22() + o.paddingBottom.j22()).j41("width", q.width - n).j41("height", q.height - m)
    }
    var i = {
      left: function () {
        this.b4.j6({
          width: this.b4.j40("width")
        })
      },
      bottom: function () {
        this.b4.j6({
          height: this.b4.j40("height"),
          width: "auto"
        })
      }
    };
    i.right = i.left;
    switch (a.toLowerCase()) {
    case "img:alt":
      k = (d && d.self) ? d.self.alt : "";
      break;
    case "img:title":
      k = (d && d.self) ? d.self.title : "";
      break;
    case "a:title":
      k = (this.r.title || this.r.oldTitle);
      break;
    case "span":
      var e = this.r.byTag("span");
      k = (e && e.length) ? e[0].innerHTML : "";
      break;
    default:
      k = (a.match(/^#/)) ? (a = $j(a.replace(/^#/, ""))) ? a.innerHTML : "" : ""
    }
    if (k) {
      var b = {
        left: 0,
        top: "auto",
        bottom: 0,
        right: "auto",
        width: "auto",
        height: "auto"
      };
      var j = this._o.captionPosition.toLowerCase();
      switch (j) {
      case "left":
        b.top = 0,
        b.left = 0,
        b["float"] = "left";
        this.b1.j6Prop("width", c.width);
        b.height = c.height;
        break;
      case "right":
        b.top = 0,
        b.right = 0,
        b["float"] = "left";
        this.b1.j6Prop("width", c.width);
        b.height = c.height;
        break;
      case "bottom":
      default:
        j = "bottom"
      }
      this.b4 = $J.$new("DIV").j2("MagicThumb-caption").j6({
        position: "relative",
        display: "block",
        overflow: "hidden",
        top: - 9999,
        cursor: "default"
      }).update(f(k)).j43(this.b0, ("left" == j) ? "top" : "bottom").j6(b);
      g.call(this);
      i[j].call(this);
      this.b4.j41("slide", new $J.FX.Slide(this.b4, {
        duration: this._o.captionSpeed,
        onStart: function () {
          this.b4.j6Prop("overflow-y", "hidden")
        }.j19(this),
        onComplete: function () {
          this.b4.j6Prop("overflow-y", "auto");
          if ($J.v.trident4) {
            this.overlapBox.j6Prop("height", this.b0.offsetHeight)
          }
        }.j19(this)
      }));
      if (this.hCaption) {
        this.b4.j40("slide").options.onBeforeRender = function (n, u, r, m, o) {
          var q = {};
          if (!r) {
            q.width = n + o.width
          }
          if (m) {
            q.left = this.curLeft - o.width + u
          }
          this.b0.j6(q)
        }.j19(this, c.width + l, this.ieBack ? 0 : this._o.screenPadding, ("fit-screen" == this._o.imageSize), "left" == j)
      } else {
        if (this.ieBack) {
          this.b4.j40("slide").wrapper.j6Prop("height", "100%")
        }
      }
    }
  },
  s4: function () {
    if ("hide" == this._o.buttons) {
      return
    }
    var b = this._o.buttonsPosition;
    pad = this.b0.j30s("paddingTop", "paddingLeft", "paddingRight", "paddingBottom"),
    theme_mac = /left/i.test(b) || ("auto" == this._o.buttonsPosition && "mac" == $J.v.platform);
    this.b5 = $J.$new("DIV").j2("MagicThumb-buttons").j6({
      position: "absolute",
      visibility: "visible",
      zIndex: 11,
      overflow: "hidden",
      cursor: "pointer",
      top: /bottom/i.test(b) ? "auto" : 5 + pad.paddingTop.j22(),
      bottom: /bottom/i.test(b) ? 5 + pad.paddingBottom.j22() : "auto",
      right: (/right/i.test(b) || !theme_mac) ? 5 + pad.paddingRight.j22() : "auto",
      left: (/left/i.test(b) || theme_mac) ? 5 + pad.paddingLeft.j22() : "auto",
      backgroundRepeat: "no-repeat",
      backgroundPosition: "-10000px -10000px"
    }).j43(this.b1);
    var a = this.b5.j5("background-image").replace(/url\s*\(\s*\"{0,1}([^\"]*)\"{0,1}\s*\)/i, "$1");
    $j($j(this._o.buttonsDisplay.replace(/\s/ig, "").split(",")).filter(function (c) {
      return this.cbs.hasOwnProperty(c)
    }.j19(this)).sort(function (d, c) {
      var e = this.cbs[d].index - this.cbs[c].index;
      return (theme_mac) ? ("close" == d) ? - 1 : ("close" == c) ? 1 : e : e
    }.j19(this))).forEach(function (c) {
      c = c.j21();
      var e = $J.$new("A", {
        title: this.cbs[c].title,
        href: "#",
        rel: c
      }, {
        display: "block",
        "float": "left"
      }).j43(this.b5),
        d = (d = e.j5("width")) ? d.j22() : 0;
      h = (h = e.j5("height")) ? h.j22() : 0;
      e.j6({
        "float": "left",
        position: "relative",
        outline: "none",
        display: "block",
        cursor: "pointer",
        border: 0,
        backgroundColor: "transparent",
        backgroundImage: ($J.v.trident4) ? "none" : "inherit",
        backgroundPosition: "" + - (this.cbs[c].index * d) + "px 0px"
      });
      if ($J.v.trident && ($J.v.version > 4)) {
        e.j6(this.b5.j30s("background-image"))
      }
      if ($J.v.trident4) {
        this.b5.j6Prop("background-image", "none");
        try {
          if (!$J.doc.namespaces.length || !$J.doc.namespaces.item("mt_vml_")) {
            $J.doc.namespaces.add("mt_vml_", "urn:schemas-microsoft-com:vml")
          }
        } catch (g) {
          try {
            $J.doc.namespaces.add("mt_vml_", "urn:schemas-microsoft-com:vml")
          } catch (g) {}
        }
        if (!$J.doc.styleSheets.magicthumb_ie_ex) {
          var i = $J.doc.createStyleSheet();
          i.owningElement.id = "magicthumb_ie_ex";
          i.cssText = "mt_vml_\\:*{behavior:url(#default#VML);} mt_vml_\\:rect {behavior:url(#default#VML); display: block; }"
        }
        e.j6({
          backgroundImage: "none",
          overflow: "hidden",
          display: "block"
        });
        var f = '<mt_vml_:rect stroked="false"><mt_vml_:fill type="tile" src="' + a + '"></mt_vml_:fill></mt_vml_:rect>';
        e.insertAdjacentHTML("beforeEnd", f);
        $j(e.firstChild).j6({
          display: "block",
          width: (d * 3) + "px",
          height: h * 2
        });
        e.scrollLeft = (this.cbs[c].index * d) + 1;
        e.scrollTop = 1;
        e.j41("bg-position", {
          l: e.scrollLeft,
          t: e.scrollTop
        })
      }
    }, this)
  },
  s5: function () {
    var a = this.thumbs.indexOf(this);
    $j($J.$A($J.doc.byTag("A")).filter(function (c) {
      var b = new RegExp("thumb\\-id(\\s+)?:(\\s+)?" + this.id.replace(/\-/, "-") + "\\W");
      return b.test(c.rel + " ")
    }, this)).forEach(function (c, b) {
      this.group = this.id;
      c = $j(c);
      $j(c).j41("j19:prevent", function (d) {
        $j(d).stop();
        return false
      }).a("click", c.j40("j19:prevent"));
      $j(c).j41("j19:replace", function (j, d) {
        var g = this.j40("thumb"),
          f = d.j40("thumb"),
          i = g.g1(g.p0 || g.id);
        $j(j).stop();
        if (!g.ready || "inactive" != g.state || !f.ready || "inactive" != f.state || g == f) {
          return
        }
        switch (j.type) {
        case "mouseout":
          if (g.swapTimer) {
            clearTimeout(g.swapTimer)
          }
          g.swapTimer = false;
          return;
          break;
        case "mouseover":
          g.swapTimer = g.swap.j19(g, f).j32(g._o.swapImageDelay);
          break;
        default:
          g.swap(f);
          return
        }
      }.j18(this.r, c)).a(this._o.swapImage, c.j40("j19:replace"));
      if ("mouseover" == this._o.swapImage) {
        c.a("mouseout", c.j40("j19:replace"))
      }
      if (c.href != this.i2.self.src) {
        new MagicThumbItem(c, $J.extend($J.detach(this._o), {
          clickToInitialize: false,
          group: this.group
        }), {
          thumbnail: c.rev,
          p0: this.id,
          index: a + b
        })
      } else {
        c.j41("thumb", this)
      }
      c.j6({
        outline: "none"
      }).j2("MagicThumb-swap");
      this.p1.push(c)
    }, this)
  },
  s6: function () {
    this.i2.self.a("mousedown", function (d) {
      $j(d).stop()
    });
    if (("auto" == this._o.restoreTrigger && "mouseover" == this._o.expandTrigger && "image" == this._o.expandAlign) || "mouseout" == this._o.restoreTrigger) {
      this.b0.a("mouseout", function (f) {
        var d = $j(f).stop().getTarget();
        if ("expanded" != this.state) {
          return
        }
        if (this.b0 == f.getRelated() || this.b0.hasChild(f.getRelated())) {
          return
        }
        this.restore(null)
      }.j18(this))
    }
    this.i2.self.a("mousedown", function (f) {
      $j(f).stop();
      var d = f.getButton();
      if (this._o.link) {
        $J.win.open(this._o.link, (2 == d) ? "_blank" : this._o.linkTarget)
      } else {
        if (1 == d) {
          this.restore(null)
        }
      }
    }.j18(this));
    if (this.b5) {
      var b, c, a;
      this.b5.j41("j19:hover", b = this.cbHover.j18(this)).j41("j19:click", c = this.cbClick.j18(this));
      this.b5.a("mouseover", b).a("mouseout", b).a("click", c);
      if ("autohide" == this._o.buttons) {
        this.b0.j41("j19:cbhover", a = function (f) {
          var d = $j(f).stop().getTarget();
          if ("expanded" != this.state) {
            return
          }
          if (this.b0 == f.getRelated() || this.b0.hasChild(f.getRelated())) {
            return
          }
          this.t1(("mouseout" == f.type))
        }.j18(this)).a("mouseover", a).a("mouseout", a)
      }
    }
  },
  s7: function () {
    this.p3 = new $J.FX(this.b0, {
      transition: $J.FX.Transition[this._o.expandEffect + this.easing[this._o.expandEffect][0]],
      duration: this._o.expandSpeed,
      onStart: function () {
        var c = this.g1(this.p0 || this.id);
        this.b0.j6Prop("width", this.p3.styles.width[0]);
        this.b0.j43($J.body);
        this.t1(true, true);
        if (this.b5 && $J.v.trident4) {
          this.b5.hide()
        }
        if (!this._o.keepThumbnail && !(this.prevItem && "expand" != this._o.slideshowEffect)) {
          var b = {};
          for (var a in this.p3.styles) {
            b[a] = this.p3.styles[a][0]
          }
          this.b0.j6(b);
          if ((" " + c.r.className + " ").match(/\s(MagicThumb|MagicZoomPlus)\s/)) {
            c.r.g(0, true)
          }
        }
        if (this.b4) {
          if ($J.v.trident && $J.v.backCompat && this.hCaption) {
            this.b4.j6Prop("display", "none")
          }
          this.b4.parentNode.j6Prop("height", 0)
        }
        this.b0.j6({
          zIndex: this._o.zIndex + 1,
          opacity: 1
        })
      }.j19(this),
      onComplete: function () {
        var c = this.g1(this.p0 || this.id);
        if (this._o.link) {
          this.b0.j6({
            cursor: "pointer"
          })
        }
        if (!(this.prevItem && "expand" != this._o.slideshowEffect)) {
          c.r.j2("MagicThumb-expanded-thumbnail")
        }
        if ("hide" != this._o.buttons) {
          if (this.b5 && $J.v.trident4) {
            this.b5.show();
            $J.$A(this.b5.byTag("A")).j14(function (b) {
              var e = b.j40("bg-position");
              b.scrollLeft = e.l;
              b.scrollTop = e.t
            })
          }
          this.t1()
        }
        if (this.b4) {
          if (this.hCaption) {
            var a = this.b0.j40("border"),
              d = this.adjBorder(this.b0, this.b0.j7().height, a.borderTopWidth.j22() + a.borderBottomWidth.j22());
            this.b1.j6(this.b0.j30s("width"));
            this.b4.j6Prop("height", d - this.b4.j40("padY")).parentNode.j6Prop("height", d);
            this.b0.j6Prop("width", "auto");
            this.curLeft = this.b0.j8().left
          }
          this.b4.j6Prop("display", "block");
          this.t3()
        }
        this.state = "expanded";
        $J.doc.a("keydown", this.onKey.j18(this))
      }.j19(this)
    });
    this.p4 = new $J.FX(this.b0, {
      transition: $J.FX.Transition.linear,
      duration: this._o.restoreSpeed,
      onStart: function () {
        this.t1(true, true);
        if (this.b5 && $J.v.trident4) {
          this.b5.hide()
        }
        this.b0.j6({
          zIndex: this._o.zIndex
        });
        if (this.b4) {
          if (this.hCaption) {
            this.b0.j6(this.b1.j30s("width"));
            this.b1.j6Prop("width", "auto")
          }
        }
      }.j19(this),
      onComplete: function () {
        if (!this.prevItem || (this.prevItem && !this.p0 && !this.p1.length)) {
          var a = this.g1(this.p0 || this.id);
          a.r.j3("MagicThumb-expanded-thumbnail").g(1, true)
        }
        this.b0.j6({
          top: - 10000
        }).j43(this.p2);
        this.state = "inactive"
      }.j19(this)
    });
    if ($J.v.trident4) {
      this.p3.options.onBeforeRender = this.p4.options.onBeforeRender = function (d, a, e, c) {
        var b = c.width + a;
        this.overlapBox.j6({
          width: b,
          height: Math.ceil(b / d) + e
        });
        if (c.opacity) {
          this.b1.g(c.opacity)
        }
      }.j19(this, this.b0.j40("ratio"), this.b0.j40("padX"), this.b0.j40("padY"))
    }
  },
  expand: function (n, i) {
    if ("inactive" != this.state) {
      return
    }
    this.state = "busy-expand";
    this.prevItem = n = n || false;
    this.g6().forEach(function (p) {
      if (p == this || this.prevItem) {
        return
      }
      switch (p.state) {
      case "busy-restore":
        p.p4.stop(true);
        break;
      case "busy-expand":
        p.p3.stop();
        p.state = "expanded";
      default:
        p.restore(null, true)
      }
    }, this);
    var r = this.g1(this.p0 || this.id).r.j40("thumb"),
      a = (r.i1) ? r.i1.self.j9() : r.r.j9(),
      m = (r.i1) ? r.i1.self.j8() : r.r.j8(),
      o = ("fit-screen" == this._o.imageSize) ? this.resize() : {
      width: this.b0.j40("size").width - this.b0.j40("padX") + this.b0.j40("hspace"),
      height: this.b0.j40("size").height - this.b0.j40("padY") + this.b0.j40("vspace")
    },
      j = {
      width: o.width + this.b0.j40("padX"),
      height: o.height + this.b0.j40("padY")
    },
      k = {},
      c = [this.b0.j30s("paddingTop", "paddingLeft", "paddingRight", "paddingBottom"), this.b0.j40("padding")],
      e = {
      width: [a.right - a.left, o.width]
    };
    $j(["Top", "Bottom", "Left", "Right"]).forEach(function (p) {
      e["padding" + p] = [c[0]["padding" + p].j22(), c[1]["padding" + p].j22()]
    });
    if (n && "expand" != this._o.slideshowEffect) {
      e.width = [o.width, o.width];
      k = this.t5(j, i);
      e.top = [k.y, k.y];
      e.left = [k.x, k.x];
      e.opacity = [0, 1];
      this.p3.options.duration = this._o.slideshowSpeed;
      this.p3.options.transition = $J.FX.Transition.linear
    } else {
      this.p3.options.transition = $J.FX.Transition[this._o.expandEffect + this.easing[this._o.expandEffect][0]];
      this.p3.options.duration = this._o.expandSpeed;
      if ($J.v.trident4) {
        this.b1.g(1)
      }
      var q = ("image" == this._o.expandAlign) ? a : this.t4();
      switch (this._o.expandPosition) {
      case "center":
        k = this.t5(j, q);
        break;
      default:
        var b = this.position;
        q.top = (q.top += parseInt(b.top)) ? q.top : (q.bottom -= parseInt(b.bottom)) ? q.bottom - j.height : q.top;
        q.bottom = q.top + j.height;
        q.left = (q.left += parseInt(b.left)) ? q.left : (q.right -= parseInt(b.right)) ? q.right - j.width : q.left;
        q.right = q.left + j.width;
        k = this.t5(j, q);
        break
      }
      e.top = [m.top, k.y];
      e.left = [m.left, k.x + ((this.b4 && "left" == this._o.captionPosition) ? this.b4.j40("width") : 0)];
      if (this._o.keepThumbnail) {
        e.opacity = [0, 1]
      }
    }
    if (this.b5) {
      $J.$A(this.b5.byTag("A")).forEach(function (s) {
        var p = s.j5("background-position").split(" ");
        if ($J.v.trident4) {
          s.scrollTop = 1
        } else {
          p[1] = "0px";
          s.j6({
            "background-position": p.join(" ")
          })
        }
      });
      var d = $J.$A(this.b5.byTag("A")).filter(function (p) {
        return "previous" == p.rel
      })[0],
        g = $J.$A(this.b5.byTag("A")).filter(function (p) {
        return "next" == p.rel
      })[0],
        l = this.g4(this.group),
        f = this.g5(this.group);
      if (d) {
        (this == l && (l == f || !this._o.slideshowLoop)) ? d.hide() : d.show()
      }
      if (g) {
        (this == f && (l == f || !this._o.slideshowLoop)) ? g.hide() : g.show()
      }
    }
    this.p3.start(e);
    this.t2()
  },
  restore: function (a, e) {
    if ("expanded" != this.state) {
      return
    }
    this.state = "busy-restore";
    this.prevItem = a = a || null;
    e = e || false;
    $J.doc.j26("keydown");
    var g = this.b0.j9();
    if (this.b4) {
      this.t3("hide");
      this.b4.parentNode.j6Prop("height", 0);
      if ($J.v.trident && $J.v.backCompat && this.hCaption) {
        this.b4.j6Prop("display", "none")
      }
    }
    var b = {};
    if (a && "expand" != this._o.slideshowEffect) {
      if ("fade" == this._o.slideshowEffect) {
        b.opacity = [1, 0]
      }
      this.p4.options.duration = this._o.slideshowSpeed;
      this.p4.options.transition = $J.FX.Transition.linear
    } else {
      this.p4.options.duration = (e) ? 0 : this._o.restoreSpeed;
      this.p4.options.transition = $J.FX.Transition[this._o.restoreEffect + this.easing[this._o.restoreEffect][1]];
      b = $J.detach(this.p3.styles);
      for (var c in b) {
        b[c].reverse()
      }
      if (!this._o.keepThumbnail) {
        delete b.opacity
      }
      var d = this.g1(this.p0 || this.id).r.j40("thumb"),
        i = (d.i1) ? d.i1.self : d.r;
      b.width[1] = [i.j7().width];
      b.top[1] = i.j8().top;
      b.left[1] = i.j8().left
    }
    this.p4.start(b);
    if (a) {
      a.expand(this, g)
    }
    var f = $J.doc.j40("bg:l0");
    if (!a && f) {
      if ("hidden" != f.el.j5("visibility")) {
        this.t2(true)
      }
    }
  },
  t3: function (b) {
    if (!this.b4) {
      return
    }
    var a = this.b4.j40("slide");
    this.b4.j6Prop("overflow-y", "hidden");
    a.stop();
    a[b || "toggle"](this.hCaption ? this._o.captionPosition : "vertical")
  },
  t1: function (c, d) {
    var f = this.b5;
    if (!f) {
      return
    }
    c = c || false;
    d = d || false;
    var b = f.j40("cb:l0"),
      a = {};
    if (!b) {
      f.j41("cb:l0", b = new $J.FX(f, {
        transition: $J.FX.Transition.linear,
        duration: 250
      }))
    } else {
      b.stop()
    }
    if (d) {
      f.j6Prop("opacity", (c) ? 0 : 1);
      return
    }
    var e = f.j5("opacity");
    a = (c) ? {
      opacity: [e, 0]
    } : {
      opacity: [e, 1]
    };
    b.start(a)
  },
  cbHover: function (g) {
    var d = $j(g).stop().getTarget();
    if ("expanded" != this.state) {
      return
    }
    try {
      while ("a" != d.tagName.toLowerCase() && d != this.b5) {
        d = d.parentNode
      }
      if ("a" != d.tagName.toLowerCase() || d.hasChild(g.getRelated())) {
        return
      }
    } catch (f) {
      return
    }
    var c = d.j5("background-position").split(" ");
    switch (g.type) {
    case "mouseover":
      c[1] = d.j5("height");
      break;
    case "mouseout":
      c[1] = "0px";
      break
    }
    if ($J.v.trident4) {
      d.scrollTop = c[1].j22() + 1
    } else {
      d.j6({
        "background-position": c.join(" ")
      })
    }
  },
  cbClick: function (c) {
    var b = $j(c).stop().getTarget();
    while ("a" != b.tagName.toLowerCase() && b != this.b5) {
      b = b.parentNode
    }
    if ("a" != b.tagName.toLowerCase()) {
      return
    }
    switch (b.rel) {
    case "previous":
      this.restore(this.g3(this, this._o.slideshowLoop));
      break;
    case "next":
      this.restore(this.g2(this, this._o.slideshowLoop));
      break;
    case "close":
      this.restore(null);
      break
    }
  },
  t2: function (c) {
    c = c || false;
    var b = $J.doc.j40("bg:l0"),
      a = {},
      e = 0;
    if (!b) {
      var d = $J.$new("DIV").j2("MagicThumb-background").j6({
        position: "fixed",
        display: "block",
        top: 0,
        bottom: 0,
        left: 0,
        right: 0,
        zIndex: (this._o.zIndex - 1),
        overflow: "hidden",
        backgroundColor: this._o.backgroundColor,
        opacity: 0,
        border: 0,
        margin: 0,
        padding: 0
      }).append($J.$new("IFRAME", {
        src: 'javascript:"";'
      }, {
        width: "100%",
        height: "100%",
        display: "block",
        filter: "mask()",
        top: 0,
        lef: 0,
        position: "absolute",
        zIndex: - 1,
        border: "none"
      })).j43($J.body).hide();
      $J.doc.j41("bg:l0", b = new $J.FX(d, {
        transition: $J.FX.Transition.linear,
        duration: this._o.backgroundSpeed,
        onStart: function (f) {
          if (f) {
            this.j6($J.extend($J.doc.j12(), {
              position: "absolute"
            }))
          }
        }.j19(d, this.ieBack),
        onComplete: function () {
          this.g(this.j5("opacity"), true)
        }.j19(d)
      }));
      a = {
        opacity: [0, this._o.backgroundOpacity / 100]
      }
    } else {
      b.stop();
      e = b.el.j5("opacity");
      b.el.j6Prop("background-color", this._o.backgroundColor);
      a = (c) ? {
        opacity: [e, 0]
      } : {
        opacity: [e, this._o.backgroundOpacity / 100]
      };
      b.options.duration = this._o.backgroundSpeed
    }
    b.el.show();
    b.start(a)
  },
  t4: function (c) {
    c = c || 0;
    var b = $j(window).j7(),
      a = $j(window).j10();
    return {
      left: a.x + c,
      right: a.x + b.width - c,
      top: a.y + c,
      bottom: a.y + b.height - c
    }
  },
  t5: function (b, c) {
    var a = this.t4(this._o.screenPadding);
    c = c || a;
    return {
      y: Math.max(a.top, Math.min(a.bottom, c.bottom - (c.bottom - c.top - b.height) / 2) - b.height),
      x: Math.max(a.left, Math.min(a.right, c.right - (c.right - c.left - b.width) / 2) - b.width)
    }
  },
  resize: function () {
    var d = $j(window).j7(),
      j = this.b0.j40("size"),
      e = this.b0.j40("ratio"),
      c = this.b0.j40("padX"),
      a = this.b0.j40("padY"),
      i = this.b0.j40("hspace"),
      b = this.b0.j40("vspace"),
      g = 0,
      f = 0;
    if (this.hCaption) {
      g = Math.min(this.i2.width + i, Math.min(j.width, d.width - c - this.scrPad.x)),
      f = Math.min(this.i2.height + b, Math.min(j.height, d.height - this.scrPad.y))
    } else {
      g = Math.min(this.i2.width + i, Math.min(j.width, d.width - this.scrPad.x)),
      f = Math.min(this.i2.height + b, Math.min(j.height, d.height - a - this.scrPad.y))
    }
    if (g / f > e) {
      g = f * e
    } else {
      if (g / f < e) {
        f = g / e
      }
    }
    this.b0.j6Prop("width", g);
    if (this.cr) {
      this.cr.j6({
        top: (this.i2.self.j7().height - this.cr.j7().height)
      })
    }
    return {
      width: Math.ceil(g),
      height: Math.ceil(f)
    }
  },
  adjBorder: function (e, c, a) {
    var d = false;
    switch ($J.v.engine) {
    case "gecko":
      d = "content-box" != (e.j5("box-sizing") || e.j5("-moz-box-sizing"));
      break;
    case "webkit":
      d = "content-box" != (e.j5("box-sizing") || e.j5("-webkit-box-sizing"));
      break;
    case "trident":
      d = $J.v.backCompat || "content-box" != (e.j5("box-sizing") || e.j5("-ms-box-sizing") || "content-box");
      break;
    default:
      d = "content-box" != e.j5("box-sizing");
      break
    }
    return (d) ? c : c - a
  },
  t0: function (d) {
    function b(i) {
      var g = [];
      if ("string" == $J.j1(i)) {
        return i
      }
      for (var f in i) {
        g.push(f.dashize() + ":" + i[f])
      }
      return g.join(";")
    }
    var e = $j(b(d).split(";")),
      c = null,
      a = null;
    e.forEach(function (g) {
      for (var f in this._o) {
        a = new RegExp("^" + f.dashize().replace(/\-/, "\\-") + "\\s*:\\s*([^;]+)$", "i").exec(g.j21());
        if (a) {
          switch ($J.j1(this._o[f])) {
          case "boolean":
            this._o[f] = a[1].j23();
            break;
          case "number":
            this._o[f] = (a[1].has(".")) ? (a[1].toFloat() * ((f.toLowerCase().has("opacity")) ? 100 : 1000)) : a[1].j22();
            break;
          default:
            this._o[f] = a[1].j21()
          }
        }
      }
    }, this)
  },
  parsePosition: function () {
    var a = null,
      c = this.position;
    for (var b in c) {
      a = new RegExp("" + b + "\\s*:\\s*([^,]+)", "i").exec(this._o.expandPosition);
      if (a) {
        c[b] = (isFinite(c[b] = a[1].j22())) ? c[b] : "auto"
      }
    }
    if ((isNaN(c.top) && isNaN(c.bottom)) || (isNaN(c.left) && isNaN(c.right))) {
      this._o.expandPosition = "center"
    }
  },
  g1: function (a) {
    return $j(this.thumbs.filter(function (b) {
      return (a == b.id)
    }))[0]
  },
  g0: function (a) {
    a = a || null;
    return $j(this.thumbs.filter(function (b) {
      return (a == b.group && b.ready && "uninitialized" != b.state)
    }))
  },
  g2: function (e, a) {
    a = a || false;
    var b = this.g0(e.group),
      d = b.indexOf(e) + 1;
    return (d >= b.length) ? (!a) ? undefined : b[0] : b[d]
  },
  g3: function (e, a) {
    a = a || false;
    var b = this.g0(e.group),
      d = b.indexOf(e) - 1;
    return (d < 0) ? (!a) ? undefined : b[b.length - 1] : b[d]
  },
  g4: function (b) {
    b = b || null;
    var a = this.g0(b);
    return (a.length) ? a[0] : undefined
  },
  g5: function (b) {
    b = b || null;
    var a = this.g0(b);
    return (a.length) ? a[a.length - 1] : undefined
  },
  g6: function () {
    return $j(this.thumbs.filter(function (a) {
      return ("expanded" == a.state || "busy-expand" == a.state || "busy-restore" == a.state)
    }))
  },
  onKey: function (b) {
    var a = this._o.slideshowLoop,
      c = null;
    if (!this._o.keyboard) {
      $J.doc.j26("keydown");
      return true
    }
    b = $j(b);
    if (this._o.keyboardCtrl && !(b.ctrlKey || b.metaKey)) {
      return false
    }
    switch (b.keyCode) {
    case 27:
      b.stop();
      this.restore(null);
      break;
    case 32:
    case 34:
    case 39:
    case 40:
      c = this.g2(this, a || 32 == b.keyCode);
      break;
    case 33:
    case 37:
    case 38:
      c = this.g3(this, a);
      break;
    default:
    }
    if (c) {
      b.stop();
      this.restore(c)
    }
  }
});
