/* Magic Zoom v3.0
   Copyright 2009 Magic Toolbox
   You must buy a license to use this tool.
   Go to www.magictoolbox.com/magiczoom/
*/
var magicJS = {
    version: "1.0.0",
    $F: function () {},
    defined: function (o) {
        return (undefined != o)
    },
    exists: function (o) {
        return !! (o)
    },
    j1: function (o) {
        if (!$J.defined(o)) {
            return false
        }
        if ((o instanceof window.Object || o instanceof window.Function) && o.constructor === $J.Class) {
            return "class"
        }
        if (o instanceof window.Array) {
            return "array"
        }
        if (o instanceof window.Function) {
            return "function"
        }
        if (o instanceof window.String) {
            return "string"
        }
        if ($J.v.trident) {
            if ($J.defined(o.cancelBubble)) {
                return "event"
            }
        } else { if (o instanceof window.Event || o === window.event) {
                return "event"
            }
        }
        if (o instanceof window.Date) {
            return "date"
        }
        if (o instanceof window.RegExp) {
            return "regexp"
        }
        if (o === window) {
            return "window"
        }
        if (o === document) {
            return "document"
        }
        if (o.length && o.item) {
            return "collection"
        }
        if (o.length && o.callee) {
            return "arguments"
        }
        if ( !! o.nodeType) {
            if (1 == o.nodeType) {
                return "element"
            }
            if (3 == o.nodeType) {
                return "textnode"
            }
        }
        return typeof(o)
    },
    extend: function (o, p) {
        if (!magicJS.defined(o)) {
            return o
        }
        for (var k in (p || {})) {
            o[k] = p[k]
        }
        return o
    },
    implement: function (o, p) {
        if (! (o instanceof window.Array)) {
            o = [o]
        }
        for (var i = 0, l = o.length; i < l; i++) {
            if (!magicJS.defined(o[i])) {
                continue
            }
            for (var k in (p || {})) {
                if (!o[i].prototype[k]) {
                    o[i].prototype[k] = p[k]
                }
            }
        }
        return o[0]
    },
    $try: function () {
        for (var i = 0, l = arguments.length; i < l; i++) {
            try {
                return arguments[i]()
            } catch(e) {}
        }
        return null
    },
    $A: function (o) {
        if (!magicJS.defined(o)) {
            return[]
        }
        if (o.toArray) {
            return o.toArray()
        }
        if (o.item) {
            var l = o.length || 0,
            a = new Array(length);
            while (l--) {
                a[l] = o[l]
            }
            return a
        }
        return Array.prototype.slice.call(o)
    },
    now: function () {
        return new Date().getTime()
    },
    detach: function (o) {
        var r;
        switch ($J.j1(o)) {
        case "object":
            r = {};
            for (var p in o) {
                r[p] = $J.detach(o[p])
            }
            break;
        case "array":
            r = [];
            for (var i = 0, l = o.length; i < l; i++) {
                r[i] = $J.detach(o[i])
            }
            break;
        default:
            return o
        }
        return r
    },
    getPageSize: function () {
        var _16, _17, _18, _19, _1a, _1b;
        var _1c = (!$J.v.backCompat) ? document.documentElement : document.body;
        var _1d = document.body;
        _16 = (window.innerWidth && window.scrollMaxX) ? window.innerWidth + window.scrollMaxX : (_1d.scrollWidth > _1d.offsetWidth) ? _1d.scrollWidth : ($J.v.trident && $J.v.backCompat) ? _1d.scrollWidth : _1d.offsetWidth;
        _17 = (window.innerHeight && window.scrollMaxY) ? window.innerHeight + window.scrollMaxY : (_1d.scrollHeight > _1d.offsetHeight) ? _1d.scrollHeight : _1d.offsetHeight;
        var _1e, _1f;
        _1e = $J.v.trident ? _1c.scrollWidth : (document.documentElement.clientWidth || self.innerWidth),
        _1f = $J.v.trident ? _1c.clientHeight : (document.documentElement.clientHeight || self.innerHeight);
        _1a = (self.pageXOffset) ? self.pageXOffset : _1c.scrollLeft;
        _1b = (self.pageYOffset) ? self.pageYOffset : _1c.scrollTop;
        _18 = (_17 < _1f) ? _1f : _17;
        _19 = (_16 < _1e) ? _1e : _16;
        return {
            "pageWidth": _19,
            "pageHeight": _18,
            "width": $J.v.trident ? _1c.clientWidth : (document.documentElement.clientWidth || self.innerWidth),
            "height": $J.v.trident ? _1c.clientHeight : ($J.v.opera) ? self.innerHeight : (self.innerHeight || document.documentElement.clientHeight),
            "scrollX": _1a,
            "scrollY": _1b,
            "viewWidth": _16,
            "viewHeight": _17
        }
    },
    $: function (o) {
        switch ($J.j1(o)) {
        case "string":
            var el = document.getElementById(o);
            if ($J.defined(el)) {
                return $J.$(el)
            }
            o = null;
            break;
        case "window":
        case "document":
            o = $J.extend(o, $J.Event.Functions);
            o = $J.extend(o, $J.Doc);
            break;
        case "element":
            o = $J.extend(o, $J.Element);
            o = $J.extend(o, $J.Event.Functions);
            break;
        case "event":
            o = $J.extend(o, $J.Event.Methods);
            break;
        case "function":
        case "array":
        case "date":
        default:
            break
        }
        return o
    },
    $new: function (tag, _23, css) {
        return $j(document.createElement(tag)).setProps(_23).p(css)
    }
};
window.$J = magicJS;
window.$j = magicJS.$;
magicJS.implement(Array, {
    indexOf: function (_25, _26) {
        var len = this.length;
        for (var l = this.length, i = (_26 < 0) ? Math.max(0, l + _26) : _26 || 0; i < l; i++) {
            if (this[i] === _25) {
                return i
            }
        }
        return -1
    },
    contains: function (_2a, _2b) {
        return this.indexOf(_2a, _2b) != -1
    },
    j14: function (cb, o) {
        for (var i = 0, l = this.length; i < l; i++) {
            if (i in this) {
                cb.call(o, this[i], i, this)
            }
        }
    },
    filter: function (cb, o) {
        var r = [];
        for (var i = 0, l = this.length; i < l; i++) {
            if (i in this) {
                var v = this[i];
                if (cb.call(o, this[i], i, this)) {
                    r.push(v)
                }
            }
        }
        return r
    },
    map: function (cb, o) {
        var r = [];
        for (var i = 0, l = this.length; i < l; i++) {
            if (i in this) {
                r[i] = cb.call(o, this[i], i, this)
            }
        }
        return r
    }
});
Array.prototype.each = Array.prototype.j14;
magicJS.implement(String, {
    j19: function () {
        return this.replace(/^\s+|\s+$/g, "")
    },
    trimLeft: function () {
        return this.replace(/^\s+/g, "")
    },
    trimRight: function () {
        return this.replace(/\s+$/g, "")
    },
    j20: function (s) {
        if ("string" != $J.j1(s)) {
            return false
        }
        return (this.toString() === s.toString())
    },
    ij20: function (s) {
        if ("string" != $J.j1(s)) {
            return false
        }
        return (this.toLowerCase().toString() === s.toLowerCase().toString())
    },
    k: function () {
        return this.replace(/-\D/g, function (m) {
            return m.charAt(1).toUpperCase()
        })
    },
    j22: function (b) {
        return parseInt(this, b || 10)
    },
    toFloat: function () {
        return parseFloat(this)
    },
    j23: function () {
        return !this.replace(/true/i, "").j19()
    },
    has: function (str, sep) {
        sep = sep || "";
        return (sep + this + sep).indexOf(sep + str + sep) > -1
    }
});
magicJS.v = {
    features: {
        xpath: !!(document.evaluate),
        air: !!(window.runtime)
    },
    engine: (window.opera) ? "presto" : (window.attachEvent) ? "trident" : (!navigator.taintEnabled) ? "webkit" : (null != document.getBoxObjectFor) ? "gecko" : "unknown",
    version: "",
    platform: (magicJS.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
    },
    domLoaded: false
};
(function () {
    magicJS.v.version = ("presto" == magicJS.v.engine) ? ((document.getElementsByClassName) ? 950 : 925) : ("trident" == magicJS.v.engine) ? !!(window.XMLHttpRequest && window.postMessage) ? 6 : ((window.XMLHttpRequest) ? 5 : 4) : ("webkit" == magicJS.v.engine) ? ((magicJS.v.features.xpath) ? 420 : 419) : ("gecko" == magicJS.v.engine) ? ((document.getElementsByClassName) ? 19 : 18) : "";
    magicJS.v[magicJS.v.engine] = magicJS.v[magicJS.v.engine + magicJS.v.version] = true
})();
magicJS.Element = {
    j13: function (_41) {
        return this.className.has(_41, " ")
    },
    j2: function (_42) {
        if (!this.j13(_42)) {
            this.className += (this.className ? " " : "") + _42
        }
        return this
    },
    j3: function (_43) {
        this.className = this.className.replace(new RegExp("(^|\\s)" + _43 + "(?:\\s|$)"), "$1").j19();
        return this
    },
    j4: function (_44) {
        return this.j13(_44) ? this.j3(_44) : this.j2(_44)
    },
    j5: function (_45) {
        _45 = _45 == "float" ? "cssFloat" : _45.k();
        var val = this.style[_45];
        if (!val && document.defaultView) {
            var css = document.defaultView.getComputedStyle(this, null);
            val = css ? css[_45] : null
        } else { if (!val && this.currentStyle) {
                val = this.currentStyle[_45]
            }
        }
        if ("opacity" == _45) {
            return $J.defined(val) ? parseFloat(val) : 1
        }
        if (/^(border(Top|Bottom|Left|Right)Width)|((padding|margin)(Top|Bottom|Left|Right))$/.test(_45)) {
            val = parseInt(val) ? val : "0px"
        }
        return ("auto" == val ? null : val)
    },
    p: function (_48) {
        for (var s in _48) {
            try {
                if ("opacity" == s) {
                    this.g(_48[s]);
                    continue
                }
                if ("float" == s) {
                    this.style[("undefined" === typeof(this.style.styleFloat)) ? "cssFloat" : "styleFloat"] = _48[s];
                    continue
                }
                this.style[s.k()] = _48[s] + (("number" == $J.j1(_48[s]) && !["zIndex", "zoom"].contains(s.k())) ? "px" : "")
            } catch(e) {}
        }
        return this
    },
    g: function (op) {
        op = parseFloat(op);
        if (op == 0) {
            if ("hidden" != this.style.visibility) {
                this.style.visibility = "hidden"
            }
        } else { if (op > 1) {
                op = parseFloat(op / 100)
            }
            if ("visible" != this.style.visibility) {
                this.style.visibility = "visible"
            }
        }
        if (!this.currentStyle || !this.currentStyle.hasLayout) {
            this.style.zoom = 1
        }
        if ($J.v.trident) {
            this.style.filter = (1 == op) ? "" : "alpha(opacity=" + op * 100 + ")"
        }
        this.style.opacity = op;
        return this
    },
    s: function () {
        return this.p({
            "display": "none",
            "visibility": "hidden"
        })
    },
    j27: function () {
        return this.p({
            "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 el = this,
        p = {
            "top": 0,
            "left": 0
        };
        do {
            p.left += el.scrollLeft || 0;
            p.top += el.scrollTop || 0;
            el = el.parentNode
        } while (el);
        return p
    },
    j8: function () {
        if ($J.defined(document.documentElement.getBoundingClientRect)) {
            var b = this.getBoundingClientRect(),
            _4e = $j(document).j10(),
            doc = $J.v.getDoc();
            return {
                "top": b.top + _4e.y - doc.clientTop,
                "left": b.left + _4e.x - doc.clientLeft
            }
        }
        var el = this,
        l = t = 0;
        do {
            l += el.offsetLeft || 0;
            t += el.offsetTop || 0;
            el = el.offsetParent
        } while (el && !(/^(?:body|html)$/i).test(el.tagName));
        return {
            "top": t,
            "left": l
        }
    },
    j9: function () {
        var p = this.j8();
        var s = this.j7();
        return {
            "top": p.top,
            "bottom": p.top + s.height,
            "left": p.left,
            "right": p.left + s.width
        }
    },
    update: function (c) {
        try {
            this.innerHTML = c
        } catch(e) {
            this.innerText = c
        }
        return this
    },
    remove: function () {
        return (this.parentNode) ? this.parentNode.removeChild(this) : this
    }
};
magicJS.Element.j30 = magicJS.Element.j5;
magicJS.Element.j31 = magicJS.Element.p;
magicJS.Doc = {
    j7: function () {
        if ($J.v.presto || $J.v.webkit) {
            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 s = this.j7();
        return {
            "width": Math.max($J.v.getDoc().scrollWidth, s.width),
            "height": Math.max($J.v.getDoc().scrollHeight, s.height)
        }
    }
};
magicJS.Event = {
    Methods: {
        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 t = this.target || this.srcElement;
            while (t && t.nodeType == 3) {
                t = t.parentNode
            }
            return t
        },
        getRelated: function () {
            var r = null;
            switch (this.type) {
            case "mouseover":
                r = this.relatedTarget || this.fromElement;
                break;
            case "mouseout":
                r = this.relatedTarget || this.toElement;
                break;
            default:
                return r
            }
            while (r && r.nodeType == 3) {
                r = r.parentNode
            }
            return r
        }
    },
    Functions: {
        a: function (evt, _59) {
            if (this === document && "domready" == evt) {
                if ($J.v.domLoaded) {
                    _59.call(this);
                    return
                }
                $J.onDomReadyList.push(_59);
                if ($J.onDomReadyList.length <= 1) {
                    $J.bindDomReady()
                }
            }
            if (this.addEventListener) {
                this.addEventListener(evt, _59, false)
            } else {
                this.attachEvent("on" + evt, _59)
            }
        },
        j26: function (evt, _5b) {
            if (this.removeEventListener) {
                this.removeEventListener(evt, _5b, false)
            } else {
                this.detachEvent("on" + evt, _5b)
            }
        },
        fire: function (_5c, _5d) { 
            var el = this; 
            if (el === document && document.createEvent && !el.dispatchEvent) {
                el = document.documentElement
            }
           var evt;
            if (document.createEvent) {
			try{
                evt = document.createEvent(_5c);
                evt.initEvent(_5d, true, true);
				} catch(e) {}
            } else {
                evt = document.createEventObject();
                evt.eventType = _5c
            }
            if (document.createEvent) {
                try{el.dispatchEvent(evt)} catch(e) {}
            } else {
                try{el.fireEvent("on" + evName, evt); } catch(e) {}
            }
            return evt
        }
    }
};
magicJS.extend(magicJS, {
    onDomReadyList: [],
    onDomReadyTimer: null,
    onDomReady: function () {
        if ($J.v.domLoaded) {
            return
        }
        $J.v.domLoaded = true;
        if ($J.onDomReadyTimer) {
            clearTimeout($J.onDomReadyTimer);
            $J.onDomReadyTimer = null
        }
        for (var i = 0, l = $J.onDomReadyList.length; i < l; i++) {
            $J.onDomReadyList[i].apply(document)
        }
    },
    bindDomReady: function () {
        if ($J.v.webkit) {
            (function () {
                if (["loaded", "complete"].contains(document.readyState)) {
                    $J.onDomReady();
                    return
                }
                $J.onDomReadyTimer = setTimeout(arguments.callee, 50);
                return
            })()
        }
        if ($J.v.ie && window == top) {
            (function () {
                try {
                    $J.v.getDoc().doScroll("left")
                } catch(e) {
                    $J.onDomReadyTimer = setTimeout(arguments.callee, 50);
                    return
                }
                $J.onDomReady()
            })()
        }
        if ($J.v.presto) {
            $j(document).a("DOMContentLoaded", function () {
                for (var i = 0, l = document.styleSheets.length; i < l; i++) {
                    if (document.styleSheets[i].disabled) {
                        $J.onDomReadyTimer = setTimeout(arguments.callee, 50);
                        return
                    }
                    $J.onDomReady()
                }
            })
        }
        $j(document).a("DOMContentLoaded", $J.onDomReady);
        $j(window).a("load", $J.onDomReady)
    }
});
magicJS.implement(Function, {
    bind: function () {
        var _64 = $J.$A(arguments),
        m = this,
        o = _64.shift();
        return function () {
            return m.apply(o, _64.concat($J.$A(arguments)))
        }
    },
    j18: function () {
        var _67 = $J.$A(arguments),
        m = this,
        o = _67.shift();
        return function (_6a) {
            return m.apply(o, [_6a || window.event].concat(_67))
        }
    },
    delay: function () {
        var _6b = $J.$A(arguments),
        m = this,
        t = _6b.shift();
        return window.setTimeout(function () {
            return m.apply(m, _6b)
        },
        t || 0)
    },
    interval: function () {
        var _6e = $J.$A(arguments),
        m = this,
        t = _6e.shift();
        return window.setInterval(function () {
            return m.apply(m, _6e)
        },
        t || 0)
    }
});
magicJS.Class = function () {
    var _71 = null,
    _72 = $J.$A(arguments);
    if ("class" == $J.j1(_72[0])) {
        _71 = _72.shift()
    }
    var _73 = function () {
        for (var k in this) {
            this[k] = $J.detach(this[k])
        }
        var _75 = (this.init) ? this.init.apply(this, arguments) : this;
        if (this.constructor.$parent) {
            this.$parent = {};
            var _76 = this.constructor.$parent;
            for (var p in _76) {
                var m = _76[p];
                switch ($J.j1(m)) {
                case "function":
                    this.$parent[p] = $J.Class.wrap(this, m);
                    break;
                case "object":
                    this.$parent[p] = $J.detach(m);
                    break;
                case "array":
                    this.$parent[p] = $J.detach(m);
                    break
                }
            }
            delete this.constructor.$parent
        }
        delete this.caller;
        return _75
    };
    if (!_73.prototype.init) {
        _73.prototype.init = $J.$F
    }
    if (_71) {
        var sc = function () {};
        sc.prototype = _71.prototype;
        _73.prototype = new sc;
        _73.$parent = {};
        for (var p in _71.prototype) {
            _73.$parent[p] = _71.prototype[p]
        }
    } else {
        _73.$parent = null
    }
    _73.constructor = $J.Class;
    _73.prototype.constructor = _73;
    $J.extend(_73.prototype, _72[0]);
    return _73
};
magicJS.Class.wrap = function (_7b, _7c) {
    return function () {
        var _7d = this.caller;
        var _7e = _7c.apply(_7b, arguments);
        return _7e
    }
};
magicJS.FX = new $J.Class({
    defaults: {
        fps: 50,
        duration: 500,
        transition: function (x) {
            return - (Math.cos(Math.PI * x) - 1) / 2
        },
        onStart: $J.$F,
        onComplete: $J.$F,
        onBeforeRender: $J.$F
    },
    init: function (el, opt) {
        this.el = $j(el);
        this.z = $J.extend($J.extend({},
        this.defaults), opt);
        this.timer = false
    },
    start: function (_82) {
        this.styles = _82;
        this.state = 0;
        this.curFrame = 0;
        this.startTime = $J.now();
        this.finishTime = this.startTime + this.z.duration;
        this.timer = this.loop.bind(this).interval(Math.round(1000 / this.z.fps));
        this.z.onStart();
        return this
    },
    stop: function (_83) {
        _83 = $J.defined(_83) ? _83 : false;
        if (this.timer) {
            clearInterval(this.timer);
            this.timer = false
        }
        if (_83) {
            this.render(1);
            setTimeout(this.z.onComplete, 10)
        }
        return this
    },
    calc: function (_84, to, dx) {
        return (to - _84) * dx + _84
    },
    loop: function () {
        var now = $J.now();
        if (now >= this.finishTime) {
            if (this.timer) {
                clearInterval(this.timer);
                this.timer = false
            }
            this.render(1);
            setTimeout(this.z.onComplete, 10);
            return this
        }
        var dx = this.z.transition((now - this.startTime) / this.z.duration);
        this.render(dx)
    },
    render: function (dx) {
        var _8a = {};
        for (var s in this.styles) {
            if ("opacity" === s) {
                _8a[s] = Math.round(this.calc(this.styles[s][0], this.styles[s][1], dx) * 100) / 100
            } else {
                _8a[s] = Math.round(this.calc(this.styles[s][0], this.styles[s][1], dx))
            }
        }
        this.z.onBeforeRender(_8a);
        this.el.p(_8a)
    }
});
magicJS.FX.Transition = {
    linear: function (x) {
        return x
    },
    sin: function (x) {
        return - (Math.cos(Math.PI * x) - 1) / 2
    },
    quadIn: function (p) {
        return Math.pow(p, 2)
    },
    quadOut: function (p) {
        return 1 - MagicTools.Transition.quadIn(1 - p)
    },
    cubicIn: function (p) {
        return Math.pow(p, 3)
    },
    cubicOut: function (p) {
        return 1 - MagicTools.Transition.cubicIn(1 - p)
    },
    backIn: function (p, x) {
        x = x || 1.618;
        return Math.pow(p, 2) * ((x + 1) * p - x)
    },
    backOut: function (p, x) {
        return 1 - MagicTools.Transition.backIn(1 - p)
    },
    elastic: function (p, x) {
        x = x || [];
        return Math.pow(2, 10 * --p) * Math.cos(20 * p * Math.PI * (x[0] || 1) / 3)
    },
    none: function (x) {
        return 0
    }
};
$J.$Ff = function () {
    return false
};
var MagicZoom = {
    version: "3.0",
    defaults: {
        opacity: 50,
        opacityReverse: false,
        smoothingSpeed: 40,
        fps: 25,
        zoomWidth: 300,
        zoomHeight: 300,
        zoomDistance: 15,
        zoomPosition: "right",
        dragMode: false,
        moveOnClick: false,
        alwaysShowZoom: false,
        preservePosition: false,
        x: -1,
        y: -1,
        clickToActivate: false,
        clickToInitialize: false,
        smoothing: true,
        showTitle: true,
        thumbChange: "click",
        zoomFade: false,
        zoomFadeInSpeed: 400,
        zoomFadeOutSpeed: 200,
        hotspots: "",
        preloadSelectorsSmall: true,
        preloadSelectorsBig: false,
        showLoading: true,
        loadingMsg: "Loading zoom..",
        loadingOpacity: 75,
        loadingPositionX: -1,
        loadingPositionY: -1,
        selectorsMouseoverDelay: 200,
        fitZoomWindow: true
    },
    z40: [/^(opacity)(\s+)?:(\s+)?(\d+)$/i, /^(opacity-reverse)(\s+)?:(\s+)?(true|false)$/i, /^(smoothing\-speed)(\s+)?:(\s+)?(\d+)$/i, /^(fps)(\s+)?:(\s+)?(\d+)$/i, /^(zoom\-width)(\s+)?:(\s+)?(\d+)(px)?/i, /^(zoom\-height)(\s+)?:(\s+)?(\d+)(px)?/i, /^(zoom\-distance)(\s+)?:(\s+)?(\d+)(px)?/i, /^(zoom\-position)(\s+)?:(\s+)?(right|left|top|bottom|custom|inner)$/i, /^(drag\-mode)(\s+)?:(\s+)?(true|false)$/i, /^(move\-on\-click)(\s+)?:(\s+)?(true|false)$/i, /^(always\-show\-zoom)(\s+)?:(\s+)?(true|false)$/i, /^(preserve\-position)(\s+)?:(\s+)?(true|false)$/i, /^(x)(\s+)?:(\s+)?([\d.]+)(px)?/i, /^(y)(\s+)?:(\s+)?([\d.]+)(px)?/i, /^(click\-to\-activate)(\s+)?:(\s+)?(true|false)$/i, /^(click\-to\-initialize)(\s+)?:(\s+)?(true|false)$/i, /^(smoothing)(\s+)?:(\s+)?(true|false)$/i, /^(show\-title)(\s+)?:(\s+)?(true|false)$/i, /^(thumb\-change)(\s+)?:(\s+)?(click|mouseover)$/i, /^(zoom\-fade)(\s+)?:(\s+)?(true|false)$/i, /^(zoom\-fade\-in\-speed)(\s+)?:(\s+)?(\d+)$/i, /^(zoom\-fade\-out\-speed)(\s+)?:(\s+)?(\d+)$/i, /^(hotspots)(\s+)?:(\s+)?([a-z0-9_\-:\.]+)$/i, /^(preload\-z53\-small)(\s+)?:(\s+)?(true|false)$/i, /^(preload\-z53\-big)(\s+)?:(\s+)?(true|false)$/i, /^(show\-loading)(\s+)?:(\s+)?(true|false)$/i, /^(loading\-msg)(\s+)?:(\s+)?([^;]*)$/i, /^(loading\-opacity)(\s+)?:(\s+)?(\d+)$/i, /^(loading\-position\-x)(\s+)?:(\s+)?(\d+)(px)?/i, /^(loading\-position\-y)(\s+)?:(\s+)?(\d+)(px)?/i, /^(z53\-mouseover\-delay)(\s+)?:(\s+)?(\d+)$/i, /^(fit\-zoom\-window)(\s+)?:(\s+)?(true|false)$/i],
    zooms: [],
    z1: function (e) {
        for (var i = 0; i < MagicZoom.zooms.length; i++) {
            if (MagicZoom.zooms[i].z28) {
                MagicZoom.zooms[i].j17()
            } else { if (MagicZoom.zooms[i].z.clickToInitialize && MagicZoom.zooms[i].initMouseEvent) {
                    MagicZoom.zooms[i].initMouseEvent = e
                }
            }
        }
    },
    stop: function (el) {
        if (el.zoom) {
            el.zoom.stop();
            return true
        }
        return false
    },
    start: function (el) {
        if (!el.zoom) {
            var p = null;
            while (p = el.firstChild) {
                if (p.tagName == "IMG") {
                    break
                }
                el.removeChild(p)
            }
            while (p = el.lastChild) {
                if (p.tagName == "IMG") {
                    break
                }
                el.removeChild(p)
            }
            if (!el.firstChild || el.firstChild.tagName != "IMG") {
                throw "Invalid Magic Zoom"
            }
            MagicZoom.zooms.push(new MagicZoom.zoom(el))
        } else {
            el.zoom.start()
        }
    },
    update: function (el, big, _a0, _a1) {
        if (el.zoom) {
            el.zoom.update(big, _a0, _a1)
        }
    },
    refresh: function () {
        $J.$A(window.document.getElementsByTagName("A")).each(function (el) {
            if (/MagicZoom/.test(el.className)) {
                if (MagicZoom.stop(el)) {
                    MagicZoom.start.delay(100, el)
                } else {
                    MagicZoom.start(el)
                }
            }
        },
        this)
    },
    getXY: function (el) {
        if (el.zoom) {
            return {
                "x": el.zoom.z.x,
                "y": el.zoom.z.y
            }
        }
    },
    xgdf7fsgd56: function (_a4) {
        var _a5 = "";
        for (i = 0; i < _a4.length; i++) {
            _a5 += String.fromCharCode(14 ^ _a4.charCodeAt(i))
        }
        return _a5
    }
};
MagicZoom.z50 = function () {
    this.init.apply(this, arguments)
};
MagicZoom.z50.prototype = {
    init: function (img) {
        this.cb = null;
        this.z2 = null;
        this.z3 = null;
        this.width = 0;
        this.height = 0;
        this.border = {
            left: 0,
            right: 0,
            top: 0,
            bottom: 0
        };
        this.padding = {
            left: 0,
            right: 0,
            top: 0,
            bottom: 0
        };
        this.ready = false;
        if ("string" == $J.j1(img)) {
            this.self = $j(new Image);
            this.z4();
            this.self.src = img
        } else {
            this.self = $j(img);
            this.z4()
        }
    },
    z4: function () {
        this.z2 = null;
        if (! (this.self.src && (this.self.complete || this.self.readyState == "complete"))) {
            this.z2 = function (e) {
                this.ready = true;
                this.z5();
                if (this.cb) {
                    this.z6();
                    this.cb.call()
                }
            }.j18(this);
            this.self.a("load", this.z2)
        } else {
            this.ready = true
        }
    },
    update: function (_a8) {
        this.unload();
        this.z3 = this.self;
        this.self = $j(new Image);
        this.z4();
        this.self.src = _a8
    },
    z6: function () {
        this.width = this.self.width;
        this.height = this.self.height;
        ["Left", "Right", "Top", "Bottom"].each(function (e) {
            this.padding[e.toLowerCase()] = this.self.j30("padding" + e).j22();
            this.border[e.toLowerCase()] = this.self.j30("border" + e + "Width").j22()
        },
        this);
        if ($J.v.presto || ($J.v.trident && !$J.v.backCompat)) {
            this.width -= this.padding.left + this.padding.right;
            this.height -= this.padding.top + this.padding.bottom
        }
    },
    getBox: function () {
        var r = null;
        r = this.self.j9();
        return {
            "top": r.top + this.border.top,
            "bottom": r.bottom - this.border.bottom,
            "left": r.left + this.border.left,
            "right": r.right - this.border.right
        }
    },
    z5: function () {
        if (this.z3) {
            this.z3.parentNode.replaceChild(this.self, this.z3);
            this.z3 = null
        }
    },
    load: function (cb) {
        if (this.ready) {
            if (!this.width) {
                this.z6()
            }
            cb.call()
        } else {
            this.cb = cb
        }
    },
    unload: function () {
        if (this.z2) {
            this.self.j26("load", this.z2)
        }
        this.z2 = null;
        this.cb = null;
        this.width = null;
        this.ready = false
    }
};
MagicZoom.zoom = function () {
    this.construct.apply(this, arguments)
};
MagicZoom.zoom.prototype = {
    construct: function (c, _ad) {
        this.z25 = -1;
        this.z28 = false;
        this.ddx = 0;
        this.ddy = 0;
        this.z = $J.detach(MagicZoom.defaults);
        if (c) {
            this.c = $j(c)
        }
        this.z37(this.c.rel);
        if (_ad) {
            this.z37(_ad)
        }
        if (c) {
            this.z7 = this.mousedown.bind(this);
            this.z8 = this.mouseup.bind(this);
            this.z9 = this.j27.bind(this, false),
            this.z10 = this.z26.bind(this),
            this.z46Bind = this.z46.j18(this);
            this.c.a("click", function (e) {
                if (!$J.v.trident) {
                    this.blur
                }
                $j(e).stop();
                return false
            });
            this.c.a("mousedown", this.z7);
            this.c.a("mouseup", this.z8);
            this.c.unselectable = "on";
            this.c.style.MozUserSelect = "none";
            this.c.onselectstart = $J.$Ff;
            this.c.oncontextmenu = $J.$Ff;
            this.c.p({
                "position": "relative",
                "display": "block",
                "textDecoration": "none",
                "outline": "0",
                "cursor": "hand"
            });
            this.c.zoom = this
        } else {
            this.z.clickToInitialize = false
        }
        if (!this.z.clickToInitialize) {
            this.z11()
        }
    },
    z11: function () {
        if (!this.q) {
            this.q = new MagicZoom.z50(this.c.firstChild);
            this.w = new MagicZoom.z50(this.c.href)
        } else {
            this.q.update(this.c.firstChild.src);
            this.w.update(this.c.href)
        }
        if (!this.e) {
            this.e = {
                self: $j(document.createElement("DIV")).j2("MagicZoomBigImageCont").p({
                    "overflow": "hidden",
                    "zIndex": 100,
                    "top": "-10000px",
                    "position": "absolute",
                    "width": this.z.zoomWidth + "px",
                    "height": this.z.zoomHeight + "px"
                }),
                zoom: this,
                z17: "0px"
            };
            this.e.s = function () {
                if (this.self.style.top != "-10000px" && !this.zoom.x.z39) {
                    this.z17 = this.self.style.top;
                    this.self.style.top = "-10000px"
                }
            };
            this.e.z18 = this.e.s.bind(this.e);
            if ($J.v.trident) {
                var f = $j(document.createElement("IFRAME"));
                f.src = "javascript:''";
                f.p({
                    "left": "0px",
                    "top": "0px",
                    "position": "absolute"
                }).g(0).frameBorder = 0;
                this.e.z19 = this.e.self.appendChild(f)
            }
            this.e.z44 = $j(this.e.self.appendChild(document.createElement("DIV"))).j2("MagicZoomHeader").p({
                "position": "relative",
                "zIndex": 10,
                "left": "0px",
                "top": "0px",
                "padding": "3px"
            }).s();
            f = document.createElement("DIV");
            f.style.overflow = "hidden";
            f.appendChild(this.w.self);
            this.e.self.appendChild(f);
            if (this.z.zoomPosition == "custom" && $j(this.c.id + "-big")) {
                $j(this.c.id + "-big").appendChild(this.e.self)
            } else {
                this.c.appendChild(this.e.self)
            }
            if ("undefined" !== typeof(gd56)) {
                this.e.gd56 = $j(document.createElement("div")).p({
                    "color": gd56[1],
                    "fontSize": gd56[2] + "px",
                    "fontWeight": gd56[3],
                    "fontFamily": "Tahoma",
                    "position": "absolute",
                    "width": gd56[5],
                    "textAlign": gd56[4],
                    "left": "0px"
                }).update(MagicZoom.xgdf7fsgd56(gd56[0]));
                this.e.self.appendChild(this.e.gd56)
            }
        }
        if (this.z.showTitle && this.c.title != "" && this.z.zoomPosition != "inner") {
            var el = this.e.z44;
            while (p = el.firstChild) {
                el.removeChild(p)
            }
            this.e.z44.appendChild(document.createTextNode(this.c.title));
            this.e.z44.j27()
        } else {
            this.e.z44.s()
        }
        if (this.c.z51 === undefined) {
            this.c.z51 = this.c.title
        }
        this.c.title = "";
        this.q.load(this.z12.bind(this))
    },
    z12: function () {
        if (!this.z.opacityReverse) {
            this.q.self.g(1)
        }
        this.c.p({
            "width": this.q.width + "px"
        });
        if (this.z.showLoading) {
            this.z20 = setTimeout(this.z10, 400)
        }
        if (this.z.hotspots != "" && $j(this.z.hotspots)) {
            this.z21()
        }
        if (this.c.id != "") {
            this.z22()
        }
        this.w.load(this.z13.bind(this))
    },
    z13: function () {
        if (this.z.fitZoomWindow) {
            if (this.w.width < this.z.zoomWidth) {
                this.z.zoomWidth = this.w.width
            }
            if (this.w.height < this.z.zoomHeight) {
                this.z.zoomHeight = this.w.height
            }
        }
        this.e.self.p({
            "height": this.z.zoomHeight + "px",
            "width": this.z.zoomWidth + "px"
        }).g(1);
        if ($J.v.trident) {
            this.e.z19.p({
                "width": this.z.zoomWidth + "px",
                "height": this.z.zoomHeight + "px"
            })
        }
        var r = this.q.self.j9();
        switch (this.z.zoomPosition) {
        case "custom":
            break;
        case "right":
            this.e.self.style.left = r["right"] - r["left"] + this.z.zoomDistance + "px";
            this.e.z17 = "0px";
            break;
        case "left":
            this.e.self.style.left = "-" + (this.z.zoomDistance + this.z.zoomWidth) + "px";
            this.e.z17 = "0px";
            break;
        case "top":
            this.e.self.style.left = "0px";
            this.e.z17 = "-" + (this.z.zoomDistance + this.z.zoomHeight) + "px";
            break;
        case "bottom":
            this.e.self.style.left = "0px";
            this.e.z17 = r["bottom"] - r["top"] + this.z.zoomDistance + "px";
            break;
        case "inner":
            this.e.self.p({
                "left": "0px",
                "height": this.q.height + "px",
                "width": this.q.width + "px"
            });
            this.z.zoomWidth = this.q.width;
            this.z.zoomHeight = this.q.height;
            this.e.z17 = "0px";
            break
        }
        if (this.e.gd56) {
            this.e.gd56.p({
                "top": (this.z.zoomHeight - 20) + "px"
            })
        }
        this.w.self.p({
            "position": "relative",
            "borderWidth": "0px",
            "padding": "0px",
            "left": "0px",
            "top": "0px"
        });
        this.z23();
        if (this.z.alwaysShowZoom) {
            if (this.z.x == -1) {
                this.z.x = this.q.width / 2
            }
            if (this.z.y == -1) {
                this.z.y = this.q.height / 2
            }
            this.j27()
        } else { if (this.z.zoomFade) {
                this.r = new $J.FX(this.e.self)
            }
            this.e.self.p({
                "top": "-10000px"
            })
        }
        if (this.z.showLoading && this.o) {
            this.o.s()
        }
        this.c.a("mousemove", this.z46Bind);
        this.c.a("mouseout", this.z46Bind);
        if (!this.z.clickToActivate) {
            this.z28 = true
        }
        if (this.z.clickToInitialize && this.initMouseEvent) {
            this.z46(this.initMouseEvent)
        }
        this.z25 = $J.now()
    },
    z26: function () {
        if (this.w.ready) {
            return
        }
        this.o = $j(document.createElement("DIV")).j2("MagicZoomLoading").g(this.z.loadingOpacity / 100).p({
            "display": "block",
            "overflow": "hidden",
            "position": "absolute",
            "visibility": "hidden",
            "z-index": 20,
            "max-width": (this.q.width - 4)
        });
        this.o.appendChild(document.createTextNode(this.z.loadingMsg));
        this.c.appendChild(this.o);
        var r = this.o.j7();
        this.o.p({
            "left": (this.z.loadingPositionX == -1 ? ((this.q.width - r.width) / 2) : (this.z.loadingPositionX)) + "px",
            "top": (this.z.loadingPositionY == -1 ? ((this.q.height - r.height) / 2) : (this.z.loadingPositionY)) + "px"
        });
        this.o.j27()
    },
    z22: function () {
        this.z53 = [];
        $J.$A(document.getElementsByTagName("A")).each(function (el) {
            var r1 = new RegExp("^" + this.c.id + "$");
            var r2 = new RegExp("zoom\\-id(\\s+)?:(\\s+)?" + this.c.id);
            if (r1.test(el.rel) || r2.test(el.rel)) {
                $j(el).z34 = function (ev, el) {
                    if (ev.type == "mouseout" || this.z35) {
                        if (this.z35) {
                            clearTimeout(this.z35)
                        }
                        this.z35 = false;
                        return
                    }
                    if (el.href == this.c.href && this.c.firstChild.src.has(el.rev)) {
                        return
                    }
                    if (el.title != "") {
                        this.c.title = el.title
                    }
                    if (ev.type == "mouseover") {
                        this.z35 = setTimeout(this.update.bind(this, el.href, el.rev, el.rel), this.z.selectorsMouseoverDelay)
                    } else {
                        this.update(el.href, el.rev, el.rel)
                    }
                }.j18(this, el);
                el.z36 = function (ev) {
                    if (!$J.v.trident) {
                        this.blur()
                    }
                    $j(ev).stop();
                    return false
                };
                el.a("click", el.z36);
                el.p({
                    "outline": "0"
                }).a(this.z.thumbChange, el.z34);
                if (this.z.thumbChange == "mouseover") {
                    el.a("mouseout", el.z34)
                }
                if (this.z.preloadSelectorsSmall) {
                    var _b9 = new Image();
                    _b9.src = el.rev
                }
                if (this.z.preloadSelectorsBig) {
                    var big = new Image();
                    big.src = el.href
                }
                this.z53.push(el)
            }
        },
        this)
    },
    stop: function (_bb) {
        try {
            this.j17();
            this.c.j26("mousemove", this.z46Bind);
            this.c.j26("mouseout", this.z46Bind);
            if (undefined == _bb) {
                this.x.self.s()
            }
            if (this.r) {
                this.r.stop()
            }
            this.y = null;
            this.z28 = false;
            this.z53.each(function (el) {
                el.j26(this.z.thumbChange, el.z34);
                if (this.z.thumbChange == "mouseover") {
                    el.j26("mouseout", el.z34)
                }
                el.z34 = null;
                el.j26("click", el.z36);
                el.z36 = null
            },
            this);
            if (this.z.hotspots != "" && $j(this.z.hotspots)) {
                $j(this.z.hotspots).s();
                $j(this.z.hotspots).z30.insertBefore($j(this.z.hotspots), $j(this.z.hotspots).z31);
                if (this.c.z32) {
                    this.c.removeChild(this.c.z32)
                }
            }
            this.q.unload();
            this.w.unload();
            this.r = null;
            if (this.o) {
                this.c.removeChild(this.o)
            }
            if (undefined == _bb) {
                this.c.removeChild(this.x.self);
                this.e.self.parentNode.removeChild(this.e.self);
                this.x = null;
                this.e = null;
                this.w = null;
                this.q = null
            }
            if (this.z20) {
                clearTimeout(this.z20);
                this.z20 = null
            }
            this.z48 = null;
            this.c.z32 = null;
            this.o = null;
            if (this.c.title == "") {
                this.c.title = this.c.z51
            }
            this.z25 = -1
        } catch(e) {}
    },
    start: function (_bd) {
        if (this.z25 != -1) {
            return
        }
        this.construct(false, _bd)
    },
    update: function (big, _bf, _c0) {
        if ($J.now() - this.z25 < 300 || this.z25 == -1) {
            var tm = 300 - $J.now() + this.z25;
            if (this.z25 == -1) {
                tm = 300
            }
            this.z35 = setTimeout(this.update.bind(this, big, _bf, _c0), tm);
            return
        }
        this.stop(true);
        if (undefined != big) {
            this.c.href = big
        }
        if (undefined != _bf) {
            this.c.firstChild.src = _bf
        }
        if (undefined == _c0) {
            _c0 = ""
        }
        if (this.z.preservePosition) {
            _c0 = "x: " + this.z.x + "; y: " + this.z.y + "; " + _c0
        }
        this.start(_c0)
    },
    z37: function (_c2) {
        var i = null;
        var z = [];
        var z41 = _c2.split(";");
        z41.each(function (_c6) {
            MagicZoom.z40.each(function (el) {
                i = el.exec(_c6.j19());
                if (i) {
                    switch ($J.j1(MagicZoom.defaults[i[1].k()])) {
                    case "boolean":
                        z[i[1].k()] = i[4] === "true";
                        break;
                    case "number":
                        z[i[1].k()] = parseFloat(i[4]);
                        break;
                    default:
                        z[i[1].k()] = i[4]
                    }
                }
            },
            this)
        },
        this);
        if (z.dragMode && undefined === z.alwaysShowZoom) {
            z.alwaysShowZoom = true
        }
        this.z = $J.extend(this.z, z)
    },
    z23: function () {
        if (!this.x) {
            this.x = {
                self: $j(document.createElement("DIV")).j2("MagicZoomPup").p({
                    "zIndex": 10,
                    "position": "absolute",
                    "overflow": "hidden"
                }).s(),
                width: 20,
                height: 20
            };
            this.c.appendChild(this.x.self)
        }
        this.x.z39 = false;
        var r = this.e.z44.j7();
        this.x.height = (this.z.zoomHeight - r.height) / (this.w.height / this.q.height);
        this.x.width = this.z.zoomWidth / (this.w.width / this.q.width);
        if (this.x.width > this.q.width) {
            this.x.width = this.q.width
        }
        if (this.x.height > this.q.height) {
            this.x.height = this.q.height
        }
        this.x.width = Math.round(this.x.width);
        this.x.height = Math.round(this.x.height);
        this.x.borderWidth = this.x.self.j30("borderLeftWidth").j22();
        this.x.self.p({
            "width": (this.x.width - 2 * ($J.v.backCompat ? 0 : this.x.borderWidth)) + "px",
            "height": (this.x.height - 2 * ($J.v.backCompat ? 0 : this.x.borderWidth)) + "px"
        });
        if (!this.z.opacityReverse) {
            this.x.self.g(parseFloat(this.z.opacity / 100));
            if (this.x.z45) {
                this.x.self.removeChild(this.x.z45);
                this.x.z45 = null
            }
        } else {
            this.x.self.g(1);
            if (this.x.z45) {
                this.x.z45.src = this.q.self.src
            } else {
                var img = new Image;
                img.src = this.q.self.src;
                img.unselectable = "on";
                this.x.z45 = $j(this.x.self.appendChild(img)).p({
                    "position": "absolute",
                    "zIndex": 5
                })
            }
        }
    },
    z46: function (e, r1) {
        if (!this.z28 || e === undefined) {
            return false
        }
        $j(e).stop();
        if (r1 === undefined) {
            var r1 = $j(e).j15()
        }
        if (this.y == null) {
            this.y = this.q.getBox()
        }
        if (r1.x > this.y.right || r1.x < this.y.left || r1.y > this.y.bottom || r1.y < this.y.top) {
            this.j17();
            return false
        }
        if (e.type == "mouseout") {
            return false
        }
        if (this.z.dragMode && !this.z49) {
            return false
        }
        if (!this.z.moveOnClick) {
            r1.x -= this.ddx;
            r1.y -= this.ddy
        }
        if ((r1.x + this.x.width / 2) >= this.y.right) {
            r1.x = this.y.right - this.x.width / 2
        }
        if ((r1.x - this.x.width / 2) <= this.y.left) {
            r1.x = this.y.left + this.x.width / 2
        }
        if ((r1.y + this.x.height / 2) >= this.y.bottom) {
            r1.y = this.y.bottom - this.x.height / 2
        }
        if ((r1.y - this.x.height / 2) <= this.y.top) {
            r1.y = this.y.top + this.x.height / 2
        }
        this.z.x = r1.x - this.y.left;
        this.z.y = r1.y - this.y.top;
        if (this.z48 == null) {
            if ($J.v.trident) {
                this.c.style.zIndex = 1
            }
            this.z48 = setTimeout(this.z9, 10)
        }
        return true
    },
    j27: function () {
        var pw = this.x.width / 2;
        var ph = this.x.height / 2;
        this.x.self.style.left = this.z.x - pw + this.q.border.left + "px";
        this.x.self.style.top = this.z.y - ph + this.q.border.top + "px";
        if (this.z.opacityReverse) {
            this.x.z45.style.left = "-" + (parseFloat(this.x.self.style.left) + this.x.borderWidth) + "px";
            this.x.z45.style.top = "-" + (parseFloat(this.x.self.style.top) + this.x.borderWidth) + "px"
        }
        var _ce = (this.z.x - pw) * (this.w.width / this.q.width);
        var _cf = (this.z.y - ph) * (this.w.height / this.q.height);
        if (this.w.width - _ce < this.z.zoomWidth) {
            _ce = this.w.width - this.z.zoomWidth
        }
        if (this.w.height - _cf < this.z.zoomHeight) {
            _cf = this.w.height - this.z.zoomHeight
        }
        if (document.documentElement.dir == "rtl") {
            _ce = (this.z.x + this.x.width / 2 - this.q.width) * (this.w.width / this.q.width)
        }
        _ce = Math.round(_ce);
        _cf = Math.round(_cf);
        if (this.z.smoothing == false || !this.x.z39) {
            this.w.self.style.left = (-_ce) + "px";
            this.w.self.style.top = (-_cf) + "px"
        } else {
            var _d0 = parseInt(this.w.self.style.left);
            var _d1 = parseInt(this.w.self.style.top);
            var dX = (-_ce - _d0);
            var dY = (-_cf - _d1);
            if (!dX && !dY) {
                this.z48 = null;
                return
            }
            dX *= this.z.smoothingSpeed / 100;
            if (dX < 1 && dX > 0) {
                dX = 1
            } else { if (dX > -1 && dX < 0) {
                    dX = -1
                }
            }
            _d0 += dX;
            dY *= this.z.smoothingSpeed / 100;
            if (dY < 1 && dY > 0) {
                dY = 1
            } else { if (dY > -1 && dY < 0) {
                    dY = -1
                }
            }
            _d1 += dY;
            this.w.self.style.left = _d0 + "px";
            this.w.self.style.top = _d1 + "px"
        }
        if (!this.x.z39) {
            if (this.r) {
                this.r.stop();
                this.r.z.onComplete = $J.$F;
                this.r.z.duration = this.z.zoomFadeInSpeed;
                this.e.self.g(0);
                this.r.start({
                    "opacity": [0, 1]
                })
            }
            if (this.z.zoomPosition != "inner") {
                this.x.self.j27()
            }
            this.e.self.style.top = this.e.z17;
            if (this.z.opacityReverse) {
                this.q.self.g(parseFloat((100 - this.z.opacity) / 100))
            }
            this.x.z39 = true
        }
        if (this.z48) {
            this.z48 = setTimeout(this.z9, 1000 / this.z.fps)
        }
    },
    j17: function () {
        if (this.z48) {
            clearTimeout(this.z48);
            this.z48 = null
        }
        if (!this.z.alwaysShowZoom && this.x.z39) {
            this.x.z39 = false;
            this.x.self.s();
            if (this.r) {
                this.r.stop();
                this.r.z.onComplete = this.e.z18;
                this.r.z.duration = this.z.zoomFadeOutSpeed;
                var _d4 = this.e.self.j30("opacity");
                this.r.start({
                    "opacity": [_d4, 0]
                })
            } else {
                this.e.s()
            }
            if (this.z.opacityReverse) {
                this.q.self.g(1)
            }
        }
        this.y = null;
        if (this.z.clickToActivate) {
            this.z28 = false
        }
        if (this.z.dragMode) {
            this.z49 = false
        }
        if ($J.v.trident) {
            this.c.style.zIndex = 0
        }
    },
    mousedown: function (e) {
        $j(e).stop();
        if (this.z.clickToInitialize && !this.q) {
            this.initMouseEvent = e;
            this.z11();
            return
        }
        if (this.w && this.z.clickToActivate && !this.z28) {
            this.z28 = true;
            this.z46(e)
        }
        if (this.z.dragMode) {
            this.z49 = true;
            if (!this.z.moveOnClick) {
                var r1 = e.j15();
                this.ddx = r1.x - this.z.x - this.y.left;
                this.ddy = r1.y - this.z.y - this.y.top;
                if (Math.abs(this.ddx) > this.x.width / 2 || Math.abs(this.ddy) > this.x.height / 2) {
                    this.z49 = false;
                    return
                }
            }
        }
        if (this.z.moveOnClick) {
            this.z46(e)
        }
    },
    mouseup: function (e) {
        $j(e).stop();
        if (this.z.dragMode) {
            this.z49 = false
        }
    }
};
if ($J.v.trident) {
    try {
        document.execCommand("BackgroundImageCache", false, true)
    } catch(e) {}
}
$j(document).a("domready", MagicZoom.refresh);
$j(document).a("mousemove", MagicZoom.z1);
