var hs = {
    lang: {
        cssDirection: "ltr",
        loadingText: '<img src="http://site.tongxueimg.com/v4/k/images/ico_loading16.gif" alt="Loading" />',
        loadingTitle: "\u70b9\u51fb\u53d6\u6d88",
        focusTitle: "\u70b9\u51fb\u7f6e\u9876",
        fullExpandTitle: "\u539f\u59cb\u5c3a\u5bf8",
        creditsText: "Powered by <i>Highslide JS</i>",
        creditsTitle: "Go to the Highslide JS homepage",
        restoreTitle: ""
    },
    graphicsDir: "http://site.tongxueimg.com/v4/k/highslide/graphics/",
    expandCursor: "zoomin.cur",
    restoreCursor: "zoomout.cur",
    expandDuration: 250,
    restoreDuration: 250,
    marginLeft: 15,
    marginRight: 15,
    marginTop: 15,
    marginBottom: 15,
    zIndexCounter: 1001,
    loadingOpacity: 0.75,
    allowMultipleInstances: true,
    numberOfImagesToPreload: 5,
    outlineWhileAnimating: 2,
    outlineStartOffset: 3,
    padToMinWidth: false,
    fullExpandPosition: "bottom right",
    fullExpandOpacity: 1,
    showCredits: false,
    creditsHref: "http://highslide.com/",
    enableKeyListener: true,
    openerTagNames: ["a"],
    dragByHeading: true,
    minWidth: 200,
    minHeight: 200,
    allowSizeReduction: true,
    outlineType: "rounded-white",
    wrapperClassName: "highslide-wrapper",
    preloadTheseImages: [],
    continuePreloading: true,
    expanders: [],
    overrides: ["allowSizeReduction", "useBox", "outlineType", "outlineWhileAnimating", "captionId", "captionText", "captionEval", "captionOverlay", "headingId", "headingText", "headingEval", "headingOverlay", "creditsPosition", "dragByHeading", "width", "height", "wrapperClassName", "minWidth", "minHeight", "maxWidth", "maxHeight", "slideshowGroup", "easing", "easingClose", "fadeInOut", "src"],
    overlays: [],
    idCounter: 0,
    oPos: {
        x: ["leftpanel", "left", "center", "right", "rightpanel"],
        y: ["above", "top", "middle", "bottom", "below"]
    },
    mouse: {},
    headingOverlay: {},
    captionOverlay: {},
    timers: [],
    pendingOutlines: {},
    clones: {},
    onReady: [],
    uaVersion: parseFloat((navigator.userAgent.toLowerCase().match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [0, "0"])[1]),
    ie: (document.all && !window.opera),
    safari: /Safari/.test(navigator.userAgent),
    geckoMac: /Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent),
    $: function(a){
        if (a) {
            return document.getElementById(a)
        }
    },
    push: function(a, b){
        a[a.length] = b
    },
    createElement: function(a, f, e, d, c){
        var b = document.createElement(a);
        if (f) {
            hs.extend(b, f)
        }
        if (c) {
            hs.setStyles(b, {
                padding: 0,
                border: "none",
                margin: 0
            })
        }
        if (e) {
            hs.setStyles(b, e)
        }
        if (d) {
            d.appendChild(b)
        }
        return b
    },
    extend: function(b, c){
        for (var a in c) {
            b[a] = c[a]
        }
        return b
    },
    setStyles: function(b, c){
        for (var a in c) {
            if (hs.ie && a == "opacity") {
                if (c[a] > 0.99) {
                    b.style.removeAttribute("filter")
                }
                else {
                    b.style.filter = "alpha(opacity=" + (c[a] * 100) + ")"
                }
            }
            else {
                b.style[a] = c[a]
            }
        }
    },
    animate: function(f, a, d){
        var c, g, j;
        if (typeof d != "object" || d === null) {
            var i = arguments;
            d = {
                duration: i[2],
                easing: i[3],
                complete: i[4]
            }
        }
        if (typeof d.duration != "number") {
            d.duration = 250
        }
        d.easing = Math[d.easing] || Math.easeInQuad;
        d.curAnim = hs.extend({}, a);
        for (var b in a) {
			//alert(b+','+a[b])
            var h = new hs.fx(f, d, b);
            c = parseFloat(hs.css(f, b)) || 0;
            g = parseFloat(a[b]);
            j = b != "opacity" ? "px" : "";
            h.custom(c, g, j)
        }
		setTimeout(function(){hs.whirlImg(f)},300)
		
    },
	//旋转图片
	whirlImg:function(box){
		if(box.className=='highslide-wrapper'){
			var d=box.id;
			var u=$("#"+d+' img').eq(0).attr('src');
			
			var md='img'+d;
			$("<div style='width:1000px; height:1000px; position:absolute; top:0px; left:-9999px;'><img id="+md+"t src="+u+" /></div>'").appendTo("body");
			$("#"+d+' img').eq(0).attr('id',md);
			var n=document.getElementById('bar'+d);
			var h='<div id="bar'+d+'" class="blogPicOri"><p class="oriPicOption"><cite class="preview"><a target="_blank" href="'+u+'">\u67e5\u770b\u539f\u56fe</a></cite><cite class="line">|</cite><cite class="imgL"><a onclick="whirlImg_init(\''+md+'\',1)" href="####">\u5411\u5de6\u8f6c</a></cite><cite class="imgR"><a onclick="whirlImg_init(\''+md+'\',0)" href="####">\u5411\u53f3\u8f6c</a></cite></p></div>';
			if(!n){
				$("#"+d).append(h);
			}
			$('#'+d).hover(function(){
				$(this).find('#bar'+d).removeClass("hide");
			}, function(){
				$(this).find('#bar'+d).addClass("hide");
			});
		}
	},
	/*whirlImg:function(box){
		
		if(box.className=='highslide-wrapper'){
			var d=box.id;
			var u=box.getElementsByTagName('img')[0].getAttribute('src');//$("#"+d+' img').eq(0).attr('src');
			var md='img'+d;
			var a=document.createElement('div');
			
			a.setAttribute('style','width:1000px; height:1000px; position:absolute; ');
			
			a.innerHTML="<img id="+md+"t src="+u+" />";
			document.body.appendChild(a);
			
			//$("<div style='width:1000px; height:1000px; position:absolute; left:-9999px;'><img id="+md+"t src="+u+" /></div>'").appendTo("body");
			//$("#"+d+' img').eq(0).attr('id',md);
			//var n=document.getElementById('bar'+d);
			//var h='<div id="bar'+d+'" class="blogPicOri"><p class="oriPicOption"><cite class="preview"><a target="_blank" href="'+u+'">\u67e5\u770b\u539f\u56fe</a></cite><cite class="line">|</cite><cite class="imgL"><a onclick="whirlImg_init(\''+md+'\',1)" href="####">\u5411\u5de6\u8f6c</a></cite><cite class="imgR"><a onclick="whirlImg_init(\''+md+'\',0)" href="####">\u5411\u53f3\u8f6c</a></cite></p></div>';
			//if(!n){
			//	$("#"+d).append(h);
			//}
		}
	},*/
    css: function(a, c){
        if (document.defaultView) {
            return document.defaultView.getComputedStyle(a, null).getPropertyValue(c)
        }
        else {
            if (c == "opacity") {
                c = "filter"
            }
            var b = a.currentStyle[c.replace(/\-(\w)/g, function(e, d){
                return d.toUpperCase()
            })];
            if (c == "filter") {
                b = b.replace(/alpha\(opacity=([0-9]+)\)/, function(e, d){
                    return d / 100
                })
            }
            return b === "" ? 1 : b
        }
    },
    getPageSize: function(){
        var f = document, b = window, e = f.compatMode && f.compatMode != "BackCompat" ? f.documentElement : f.body;//all e=f.documentElement
		//hk 091029
		if(document.all&&!window.XMLHttpRequest){
			e=document.getElementById('tongxue');
		}
        var c = hs.ie ? e.clientWidth : (f.documentElement.clientWidth || self.innerWidth), a = hs.ie ? e.clientHeight : self.innerHeight;
        return {
            width: c,
            height: a,
            scrollLeft: hs.ie ? e.scrollLeft : pageXOffset,
            scrollTop: hs.ie ? e.scrollTop : pageYOffset
        }
    },
    getPosition: function(a){
        var b = {
            x: a.offsetLeft,
            y: a.offsetTop
        };
		
        while (a.offsetParent) {
            a = a.offsetParent;
            b.x += a.offsetLeft;
            b.y += a.offsetTop;
            /*if (a != document.body && a != document.documentElement) {
                b.x -= a.scrollLeft;
                b.y -= a.scrollTop
				alert(b.y)
            }*/
        }
        return b
    },
    expand: function(b, g, d, c){
        if (!b) {
            b = hs.createElement("a", null, {
                display: "none"
            }, hs.container)
        }
        if (typeof b.getParams == "function") {
            return g
        }
        try {
            new hs.Expander(b, g, d);
            return false
        } 
        catch (f) {
            return true
        }
    },
    focusTopmost: function(){
        var c = 0, b = -1, a = hs.expanders, e, f;
        for (var d = 0; d < a.length; d++) {
            e = a[d];
            if (e) {
                f = e.wrapper.style.zIndex;
                if (f && f > c) {
                    c = f;
                    b = d
                }
            }
        }
        if (b == -1) {
            hs.focusKey = -1
        }
        else {
            a[b].focus()
        }
    },
    getParam: function(b, d){
        b.getParams = b.onclick;
        var c = b.getParams ? b.getParams() : null;
        b.getParams = null;
        return (c && typeof c[d] != "undefined") ? c[d] : (typeof hs[d] != "undefined" ? hs[d] : null)
    },
    getSrc: function(b){
        var c = hs.getParam(b, "src");
        if (c) {
            return c
        }
        return b.href
    },
    getNode: function(e){
        var c = hs.$(e), d = hs.clones[e], b = {};
        if (!c && !d) {
            return null
        }
        if (!d) {
            d = c.cloneNode(true);
            d.id = "";
            hs.clones[e] = d;
            return c
        }
        else {
            return d.cloneNode(true)
        }
    },
    discardElement: function(a){
        hs.garbageBin.appendChild(a);
        hs.garbageBin.innerHTML = ""
    },
    transit: function(a, d){
        var b = d = d || hs.getExpander();
        if (hs.upcoming) {
            return false
        }
        else {
            hs.last = b
        }
        try {
            hs.upcoming = a;
            a.onclick()
        } 
        catch (c) {
            hs.last = hs.upcoming = null
        }
        try {
            d.close()
        } 
        catch (c) {
        }
        return false
    },
    previousOrNext: function(a, c){
        var b = hs.getExpander(a);
        if (b) {
            adj = b.getAdjacentAnchor(c);
            return hs.transit(adj, b)
        }
        else {
            return false
        }
    },
    previous: function(a){
        return hs.previousOrNext(a, -1)
    },
    next: function(a){
        return hs.previousOrNext(a, 1)
    },
    keyHandler: function(a){
        if (!a) {
            a = window.event
        }
        if (!a.target) {
            a.target = a.srcElement
        }
        if (typeof a.target.form != "undefined") {
            return true
        }
        var b = hs.getExpander();
        var c = null;
        switch (a.keyCode) {
            case 70:
                if (b) {
                    b.doFullExpand()
                }
                return true;
            case 32:
            case 34:
            case 39:
            case 40:
                c = 1;
                break;
            case 8:
            case 33:
            case 37:
            case 38:
                c = -1;
                break;
            case 27:
            case 13:
                c = 0
        }
        if (c !== null) {
            hs.removeEventListener(document, window.opera ? "keypress" : "keydown", hs.keyHandler);
            if (!hs.enableKeyListener) {
                return true
            }
            if (a.preventDefault) {
                a.preventDefault()
            }
            else {
                a.returnValue = false
            }
            if (b) {
                if (c == 0) {
                    b.close()
                }
                else {
                    hs.previousOrNext(b.key, c)
                }
                return false
            }
        }
        return true
    },
    registerOverlay: function(a){
        hs.push(hs.overlays, hs.extend(a, {
            hsId: "hsId" + hs.idCounter++
        }))
    },
    getWrapperKey: function(c, b){
        var e, d = /^highslide-wrapper-([0-9]+)$/;
        e = c;
        while (e.parentNode) {
            if (e.id && d.test(e.id)) {
                return e.id.replace(d, "$1")
            }
            e = e.parentNode
        }
        if (!b) {
            e = c;
            while (e.parentNode) {
                if (e.tagName && hs.isHsAnchor(e)) {
                    for (var a = 0; a < hs.expanders.length; a++) {
                        var f = hs.expanders[a];
                        if (f && f.a == e) {
                            return a
                        }
                    }
                }
                e = e.parentNode
            }
        }
        return null
    },
    getExpander: function(b, a){
        if (typeof b == "undefined") {
            return hs.expanders[hs.focusKey] || null
        }
        if (typeof b == "number") {
            return hs.expanders[b] || null
        }
        if (typeof b == "string") {
            b = hs.$(b)
        }
        return hs.expanders[hs.getWrapperKey(b, a)] || null
    },
    isHsAnchor: function(b){
        return (b.onclick && b.onclick.toString().replace(/\s/g, " ").match(/hs.(htmlE|e)xpand/))
    },
    reOrder: function(){
        for (var a = 0; a < hs.expanders.length; a++) {
            if (hs.expanders[a] && hs.expanders[a].isExpanded) {
                hs.focusTopmost()
            }
        }
    },
    mouseClickHandler: function(d){
        if (!d) {
            d = window.event
        }
        if (d.button > 1) {
            return true
        }
        if (!d.target) {
            d.target = d.srcElement
        }
        var b = d.target;
        while (b.parentNode && !(/highslide-(image|move|html|resize)/.test(b.className))) {
            b = b.parentNode
        }
        var f = hs.getExpander(b);
        if (f && (f.isClosing || !f.isExpanded)) {
            return true
        }
        if (f && d.type == "mousedown") {
            if (d.target.form) {
                return true
            }
            var a = b.className.match(/highslide-(image|move|resize)/);
            if (a) {
                hs.dragArgs = {
                    exp: f,
                    type: a[1],
                    left: f.x.pos,
                    width: f.x.size,
                    top: f.y.pos,
                    height: f.y.size,
                    clickX: d.clientX,
                    clickY: d.clientY
                };
                hs.addEventListener(document, "mousemove", hs.dragHandler);
                if (d.preventDefault) {
                    d.preventDefault()
                }
                if (/highslide-(image|html)-blur/.test(f.content.className)) {
                    f.focus();
                    hs.hasFocused = true
                }
                return false
            }
        }
        else {
            if (d.type == "mouseup") {
                hs.removeEventListener(document, "mousemove", hs.dragHandler);
                if (hs.dragArgs) {
                    if (hs.styleRestoreCursor && hs.dragArgs.type == "image") {
                        hs.dragArgs.exp.content.style.cursor = hs.styleRestoreCursor
                    }
                    var c = hs.dragArgs.hasDragged;
                    if (!c && !hs.hasFocused && !/(move|resize)/.test(hs.dragArgs.type)) {
                        f.close()
                    }
                    else {
                        if (c || (!c && hs.hasHtmlExpanders)) {
                            hs.dragArgs.exp.doShowHide("hidden")
                        }
                    }
                    hs.hasFocused = false;
                    hs.dragArgs = null
                }
                else {
                    if (/highslide-image-blur/.test(b.className)) {
                        b.style.cursor = hs.styleRestoreCursor
                    }
                }
            }
        }
        return false
    },
    dragHandler: function(c){
        if (!hs.dragArgs) {
            return true
        }
        if (!c) {
            c = window.event
        }
        var b = hs.dragArgs, d = b.exp;
        b.dX = c.clientX - b.clickX;
        b.dY = c.clientY - b.clickY;
        var f = Math.sqrt(Math.pow(b.dX, 2) + Math.pow(b.dY, 2));
        if (!b.hasDragged) {
            b.hasDragged = (b.type != "image" && f > 0) || (f > (hs.dragSensitivity || 5))
        }
        if (b.hasDragged && c.clientX > 5 && c.clientY > 5) {
            if (b.type == "resize") {
                d.resize(b)
            }
            else {
                d.moveTo(b.left + b.dX, b.top + b.dY);
                if (b.type == "image") {
                    d.content.style.cursor = "move"
                }
            }
        }
        return false
    },
    wrapperMouseHandler: function(c){
        try {
            if (!c) {
                c = window.event
            }
            var b = /mouseover/i.test(c.type);
            if (!c.target) {
                c.target = c.srcElement
            }
            if (hs.ie) {
                c.relatedTarget = b ? c.fromElement : c.toElement
            }
            var d = hs.getExpander(c.target);
            if (!d.isExpanded) {
                return
            }
            if (!d || !c.relatedTarget || hs.getExpander(c.relatedTarget, true) == d || hs.dragArgs) {
                return
            }
            for (var a = 0; a < d.overlays.length; a++) {
                (function(){
                    var e = hs.$("hsId" + d.overlays[a]);
                    if (e && e.hideOnMouseOut) {
                        if (b) {
                            hs.setStyles(e, {
                                visibility: "visible"
                            })
                        }
                        hs.animate(e, {
                            opacity: b ? e.opacity : 0
                        }, e.dur)
                    }
                })()
            }
        } 
        catch (c) {
        }
    },
    addEventListener: function(a, c, b){
        if (a == document && c == "ready") {
            hs.push(hs.onReady, b)
        }
        try {
            a.addEventListener(c, b, false)
        } 
        catch (d) {
            try {
                a.detachEvent("on" + c, b);
                a.attachEvent("on" + c, b)
            } 
            catch (d) {
                a["on" + c] = b
            }
        }
    },
    removeEventListener: function(a, c, b){
        try {
            a.removeEventListener(c, b, false)
        } 
        catch (d) {
            try {
                a.detachEvent("on" + c, b)
            } 
            catch (d) {
                a["on" + c] = null
            }
        }
    },
    preloadFullImage: function(b){
        if (hs.continuePreloading && hs.preloadTheseImages[b] && hs.preloadTheseImages[b] != "undefined") {
            var a = document.createElement("img");
            a.onload = function(){
                a = null;
                hs.preloadFullImage(b + 1)
            };
            a.src = hs.preloadTheseImages[b]
        }
    },
    preloadImages: function(c){
        if (c && typeof c != "object") {
            hs.numberOfImagesToPreload = c
        }
        var a = hs.getAnchors();
        for (var b = 0; b < a.images.length && b < hs.numberOfImagesToPreload; b++) {
            hs.push(hs.preloadTheseImages, hs.getSrc(a.images[b]))
        }
        if (hs.outlineType) {
            new hs.Outline(hs.outlineType, function(){
                hs.preloadFullImage(0)
            })
        }
        else {
            hs.preloadFullImage(0)
        }
        if (hs.restoreCursor) {
            var d = hs.createElement("img", {
                src: hs.graphicsDir + hs.restoreCursor
            })
        }
    },
    init: function(){
        if (!hs.container) {
            hs.page = hs.getPageSize();
            hs.ieLt7 = hs.ie && hs.uaVersion < 7;
            for (var a in hs.langDefaults) {
                if (typeof hs[a] != "undefined") {
                    hs.lang[a] = hs[a]
                }
                else {
                    if (typeof hs.lang[a] == "undefined" && typeof hs.langDefaults[a] != "undefined") {
                        hs.lang[a] = hs.langDefaults[a]
                    }
                }
            }
            hs.container = hs.createElement("div", {
                className: "highslide-container"
            }, {
                position: "absolute",
                left: 0,
                top: 0,
                width: "100%",
                zIndex: hs.zIndexCounter,
                direction: "ltr"//,
				//width:"100px",
				//height:"100px",
				//background:"red"
            //}, document.body, true);
			}, document.getElementById('tongxue'), true);
            hs.loading = hs.createElement("a", {
                className: "highslide-loading",
                title: hs.lang.loadingTitle,
                innerHTML: hs.lang.loadingText,
                href: "javascript:;"
            }, {
                position: "absolute",
                top: "-9999px",
                opacity: hs.loadingOpacity,
                zIndex: 1
            }, hs.container);
            hs.garbageBin = hs.createElement("div", null, {
                display: "none"
            }, hs.container);
            Math.linearTween = function(f, e, h, g){
                return h * f / g + e
            };
            Math.easeInQuad = function(f, e, h, g){
                return h * (f /= g) * f + e
            };
            hs.hideSelects = hs.ieLt7;
            hs.hideIframes = ((window.opera && hs.uaVersion < 9) || navigator.vendor == "KDE" || (hs.ie && hs.uaVersion < 5.5))
        }
    },
    ready: function(){
        if (hs.isReady) {
            return
        }
        hs.isReady = true;
        for (var a = 0; a < hs.onReady.length; a++) {
            hs.onReady[a]()
        }
    },
    updateAnchors: function(){
        var a, c, k = [], h = [], b = {}, l;
        for (var e = 0; e < hs.openerTagNames.length; e++) {
            c = document.getElementsByTagName(hs.openerTagNames[e]);
            for (var d = 0; d < c.length; d++) {
                a = c[d];
                l = hs.isHsAnchor(a);
                if (l) {
                    hs.push(k, a);
                    if (l[0] == "hs.expand") {
                        hs.push(h, a)
                    }
                    var f = hs.getParam(a, "slideshowGroup") || "none";
                    if (!b[f]) {
                        b[f] = []
                    }
                    hs.push(b[f], a)
                }
            }
        }
        hs.anchors = {
            all: k,
            groups: b,
            images: h
        };
        return hs.anchors
    },
    getAnchors: function(){
        return hs.anchors || hs.updateAnchors()
    },
    close: function(a){
        var b = hs.getExpander(a);
        if (b) {
            b.close()
        }
        return false
    }
};
hs.fx = function(b, a, c){
    this.options = a;
    this.elem = b;
    this.prop = c;
    if (!a.orig) {
        a.orig = {}
    }
};
hs.fx.prototype = {
    update: function(){
        (hs.fx.step[this.prop] || hs.fx.step._default)(this);
        if (this.options.step) {
            this.options.step.call(this.elem, this.now, this)
        }
    },
    custom: function(e, d, c){
        this.startTime = (new Date()).getTime();
        this.start = e;
        this.end = d;
        this.unit = c;
        this.now = this.start;
        this.pos = this.state = 0;
        var a = this;
        function b(f){
            return a.step(f)
        }
        b.elem = this.elem;
        if (b() && hs.timers.push(b) == 1) {
            hs.timerId = setInterval(function(){
                var g = hs.timers;
                for (var f = 0; f < g.length; f++) {
                    if (!g[f]()) {
                        g.splice(f--, 1)
                    }
                }
                if (!g.length) {
					
                    clearInterval(hs.timerId)
                }
            }, 13)
        }
		
    },
    step: function(d){
        var c = (new Date()).getTime();
        if (d || c >= this.options.duration + this.startTime) {
            this.now = this.end;
            this.pos = this.state = 1;
            this.update();
            this.options.curAnim[this.prop] = true;
            var a = true;
            for (var b in this.options.curAnim) {
                if (this.options.curAnim[b] !== true) {
                    a = false
                }
            }
            if (a) {
                if (this.options.complete) {
                    this.options.complete.call(this.elem)
                }
            }
            return false
        }
        else {
            var e = c - this.startTime;
            this.state = e / this.options.duration;
            this.pos = this.options.easing(e, 0, 1, this.options.duration);
            this.now = this.start + ((this.end - this.start) * this.pos);
            this.update()
        }
        return true
    }
};
hs.extend(hs.fx, {
    step: {
        opacity: function(a){
            hs.setStyles(a.elem, {
                opacity: a.now
            })
        },
        _default: function(a){
            if (a.elem.style && a.elem.style[a.prop] != null) {
                a.elem.style[a.prop] = a.now + a.unit
            }
            else {
                a.elem[a.prop] = a.now
            }
        }
    }
});
hs.Outline = function(g, e){
    this.onLoad = e;
    this.outlineType = g;
    var a = hs.uaVersion, f;
    this.hasAlphaImageLoader = hs.ie && a >= 5.5 && a < 7;
    if (!g) {
        if (e) {
            e()
        }
        return
    }
    hs.init();
    this.table = hs.createElement("table", {
        cellSpacing: 0
    }, {
        visibility: "hidden",
        position: "absolute",
        borderCollapse: "collapse",
        width: 0
    }, hs.container, true);
    var b = hs.createElement("tbody", null, null, this.table, 1);
    this.td = [];
    for (var c = 0; c <= 8; c++) {
        if (c % 3 == 0) {
            f = hs.createElement("tr", null, {
                height: "auto"
            }, b, true)
        }
        this.td[c] = hs.createElement("td", null, null, f, true);
        var d = c != 4 ? {
            lineHeight: 0,
            fontSize: 0
        } : {
            position: "relative"
        };
        hs.setStyles(this.td[c], d)
    }
    this.td[4].className = g + " highslide-outline";
    this.preloadGraphic()
};
hs.Outline.prototype = {
    preloadGraphic: function(){
        var b = hs.graphicsDir + (hs.outlinesDir || "outlines/") + this.outlineType + ".png";
        var a = hs.safari ? hs.container : null;
        this.graphic = hs.createElement("img", null, {
            position: "absolute",
            top: "-9999px"
        }, a, true);
        var c = this;
        this.graphic.onload = function(){
            c.onGraphicLoad()
        };
        this.graphic.src = b
    },
    onGraphicLoad: function(){
        var d = this.offset = this.graphic.width / 4, f = [[0, 0], [0, -4], [-2, 0], [0, -8], 0, [-2, -8], [0, -2], [0, -6], [-2, -2]], c = {
            height: (2 * d) + "px",
            width: (2 * d) + "px"
        };
        for (var b = 0; b <= 8; b++) {
            if (f[b]) {
                if (this.hasAlphaImageLoader) {
                    var a = (b == 1 || b == 7) ? "100%" : this.graphic.width + "px";
                    var e = hs.createElement("div", null, {
                        width: "100%",
                        height: "100%",
                        position: "relative",
                        overflow: "hidden"
                    }, this.td[b], true);
                    hs.createElement("div", null, {
                        filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='" + this.graphic.src + "')",
                        position: "absolute",
                        width: a,
                        height: this.graphic.height + "px",
                        left: (f[b][0] * d) + "px",
                        top: (f[b][1] * d) + "px"
                    }, e, true)
                }
                else {
                    hs.setStyles(this.td[b], {
                        background: "url(" + this.graphic.src + ") " + (f[b][0] * d) + "px " + (f[b][1] * d) + "px"
                    })
                }
                if (window.opera && (b == 3 || b == 5)) {
                    hs.createElement("div", null, c, this.td[b], true)
                }
                hs.setStyles(this.td[b], c)
            }
        }
        this.graphic = null;
        if (hs.pendingOutlines[this.outlineType]) {
            hs.pendingOutlines[this.outlineType].destroy()
        }
        hs.pendingOutlines[this.outlineType] = this;
        if (this.onLoad) {
            this.onLoad()
        }
    },
    setPosition: function(g, e, c, b, f){
		
        var d = this.exp, a = d.wrapper.style, e = e || 0, g = g ||
        {
            x: d.x.pos + e,
            y: d.y.pos + e,
            w: d.x.get("wsize") - 2 * e,
            h: d.y.get("wsize") - 2 * e
        };
        if (c) {
            this.table.style.visibility = (g.h >= 4 * this.offset) ? "visible" : "hidden"
        }
        hs.setStyles(this.table, {
            left: (g.x - this.offset) + "px",
            top: (g.y - this.offset) + "px",
            width: (g.w + 2 * this.offset) + "px"
        });
        g.w -= 2 * this.offset;
        g.h -= 2 * this.offset;
        hs.setStyles(this.td[4], {
            width: g.w >= 0 ? g.w + "px" : 0,
            height: g.h >= 0 ? g.h + "px" : 0
        });
        if (this.hasAlphaImageLoader) {
            this.td[3].style.height = this.td[5].style.height = this.td[4].style.height
        }
    },
    destroy: function(a){
        if (a) {
            this.table.style.visibility = "hidden"
        }
        else {
            hs.discardElement(this.table)
        }
    }
};
hs.Dimension = function(b, a){
    this.exp = b;
    this.dim = a;
    this.ucwh = a == "x" ? "Width" : "Height";
    this.wh = this.ucwh.toLowerCase();
    this.uclt = a == "x" ? "Left" : "Top";
    this.lt = this.uclt.toLowerCase();
    this.ucrb = a == "x" ? "Right" : "Bottom";
    this.rb = this.ucrb.toLowerCase();
    this.p1 = this.p2 = 0
};
hs.Dimension.prototype = {
    get: function(a){
        switch (a) {
            case "loadingPos":
                return this.tpos + this.tb + (this.t - hs.loading["offset" + this.ucwh]) / 2;
            case "wsize":
                return this.size + 2 * this.cb + this.p1 + this.p2;
            case "fitsize":
                return this.clientSize - this.marginMin - this.marginMax;
            case "maxsize":
                return this.get("fitsize") - 2 * this.cb - this.p1 - this.p2;
            case "opos":
                return this.pos - (this.exp.outline ? this.exp.outline.offset : 0);
            case "osize":
                return this.get("wsize") + (this.exp.outline ? 2 * this.exp.outline.offset : 0);
            case "imgPad":
                return this.imgSize ? Math.round((this.size - this.imgSize) / 2) : 0
        }
    },
    calcBorders: function(){
        this.cb = (this.exp.content["offset" + this.ucwh] - this.t) / 2;
        this.marginMax = hs["margin" + this.ucrb] + 2 * this.cb
    },
    calcThumb: function(){
        this.t = this.exp.el[this.wh] ? parseInt(this.exp.el[this.wh]) : this.exp.el["offset" + this.ucwh];
        this.tpos = this.exp.tpos[this.dim];
        this.tb = (this.exp.el["offset" + this.ucwh] - this.t) / 2;
        if (this.tpos == 0) {
            this.tpos = (hs.page[this.wh] / 2) + hs.page["scroll" + this.uclt]
        }
    },
    calcExpanded: function(){
        var a = this.exp;
        this.justify = "auto";
        this.pos = this.tpos - this.cb + this.tb;
		
        this.size = Math.min(this.full, a["max" + this.ucwh] || this.full);
        this.minSize = a.allowSizeReduction ? Math.min(a["min" + this.ucwh], this.full) : this.full;
        if (a.isImage && a.useBox) {
            this.size = a[this.wh];
            this.imgSize = this.full
        }
        if (this.dim == "x" && hs.padToMinWidth) {
            this.minSize = a.minWidth
        }
        this.marginMin = hs["margin" + this.uclt];
        this.scroll = hs.page["scroll" + this.uclt];
        this.clientSize = hs.page[this.wh]
    },
    setSize: function(a){
        var b = this.exp;
        if (b.isImage && (b.useBox || hs.padToMinWidth)) {
            this.imgSize = a;
            this.size = Math.max(this.size, this.imgSize);
            b.content.style[this.lt] = this.get("imgPad") + "px"
        }
        else {
            this.size = a
        }
        b.content.style[this.wh] = a + "px";
        b.wrapper.style[this.wh] = this.get("wsize") + "px";
        if (b.outline) {
            b.outline.setPosition()
        }
        if (this.dim == "x" && b.overlayBox) {
            b.sizeOverlayBox(true)
        }
    },
    setPos: function(a){
        this.pos = a;
        this.exp.wrapper.style[this.lt] = a + "px";
        if (this.exp.outline){
            this.exp.outline.setPosition()
        }
    }
};
hs.Expander = function(k, f, b, l){
    if (document.readyState && hs.ie && !hs.isReady) {
        hs.addEventListener(document, "ready", function(){
           new hs.Expander(k, f, b, l)
        });
        return
    }
    this.a = k;
    this.custom = b;
    this.contentType = l || "image";
    this.isImage = !this.isHtml;
    hs.continuePreloading = false;
    this.overlays = [];
    hs.init();
    var m = this.key = hs.expanders.length;
    for (var g = 0; g < hs.overrides.length; g++) {
        var c = hs.overrides[g];
        this[c] = f && typeof f[c] != "undefined" ? f[c] : hs[c]
    }
    if (!this.src) {
        this.src = k.href
    }
    var d = (f && f.thumbnailId) ? hs.$(f.thumbnailId) : k;
    d = this.thumb = d.getElementsByTagName("img")[0] || d;
    this.thumbsUserSetId = d.id || k.id;
    for (var g = 0; g < hs.expanders.length; g++) {
        if (hs.expanders[g] && hs.expanders[g].a == k) {
            hs.expanders[g].focus();
            return false
        }
    }
    for (var g = 0; g < hs.expanders.length; g++) {
        if (hs.expanders[g] && hs.expanders[g].thumb != d && !hs.expanders[g].onLoadStarted) {
            hs.expanders[g].cancelLoading()
        }
    }
    hs.expanders[this.key] = this;
    if (!hs.allowMultipleInstances && !hs.upcoming) {
        if (hs.expanders[m - 1]) {
            hs.expanders[m - 1].close()
        }
        if (typeof hs.focusKey != "undefined" && hs.expanders[hs.focusKey]) {
            hs.expanders[hs.focusKey].close()
        }
    }
    this.el = d;
    this.tpos = hs.getPosition(d);
    hs.page = hs.getPageSize();
    var j = this.x = new hs.Dimension(this, "x");
    j.calcThumb();
    var h = this.y = new hs.Dimension(this, "y");
    h.calcThumb();
    this.wrapper = hs.createElement("div", {
        id: "highslide-wrapper-" + this.key,
        className: this.wrapperClassName
    }, {
        visibility: "hidden",
        position: "absolute",
        zIndex: hs.zIndexCounter++
    }, null, true);
    this.wrapper.onmouseover = this.wrapper.onmouseout = hs.wrapperMouseHandler;
    if (this.contentType == "image" && this.outlineWhileAnimating == 2) {
        this.outlineWhileAnimating = 0
    }
    if (!this.outlineType) {
        this[this.contentType + "Create"]()
    }
    else {
        if (hs.pendingOutlines[this.outlineType]) {
            this.connectOutline();
            this[this.contentType + "Create"]()
        }
        else {
            this.showLoading();
            var e = this;
            new hs.Outline(this.outlineType, function(){
                e.connectOutline();
                e[e.contentType + "Create"]()
            })
        }
    }
	
    return true
};
hs.Expander.prototype = {
    error: function(a){
        window.location.href = this.src
    },
    connectOutline: function(){
        var a = this.outline = hs.pendingOutlines[this.outlineType];
        a.exp = this;
        a.table.style.zIndex = this.wrapper.style.zIndex;
        hs.pendingOutlines[this.outlineType] = null
    },
    showLoading: function(){
        if (this.onLoadStarted || this.loading) {
            return
        }
        this.loading = hs.loading;
        var c = this;
        this.loading.onclick = function(){
            c.cancelLoading()
        };
        var c = this, a = this.x.get("loadingPos") + "px", b = this.y.get("loadingPos") + "px";
        setTimeout(function(){
            if (c.loading) {
                hs.setStyles(c.loading, {
                    left: a,
                    top: b,
                    zIndex: hs.zIndexCounter++
                })
            }
        }, 100)
    },
    imageCreate: function(){
        var b = this;
        var a = document.createElement("img");
        this.content = a;
        a.onload = function(){
            if (hs.expanders[b.key]) {
                b.contentLoaded()
            }
        };
        if (hs.blockRightClick) {
            a.oncontextmenu = function(){
                return false
            }
        }
        a.className = "highslide-image";
        hs.setStyles(a, {
            visibility: "hidden",
            display: "block",
            position: "absolute",
            maxWidth: "9999px",
            zIndex: 3
        });
        a.title = hs.lang.restoreTitle;
        if (hs.safari) {
            hs.container.appendChild(a)
        }
        if (hs.ie) {
            a.src = "res://"
        }
        a.src = this.src;
        this.showLoading()
    },
    contentLoaded: function(){
        try {
            if (!this.content) {
                return
            }
            this.content.onload = null;
            if (this.onLoadStarted) {
                return
            }
            else {
                this.onLoadStarted = true
            }
            var a = this.x, d = this.y;
            if (this.loading) {
                hs.setStyles(this.loading, {
                    top: "-9999px"
                });
                this.loading = null
            }
            a.full = this.content.width;
            d.full = this.content.height;
            hs.setStyles(this.content, {
                width: a.t + "px",
                height: d.t + "px"
            });
            this.wrapper.appendChild(this.content);
            hs.container.appendChild(this.wrapper);
            a.calcBorders();
            d.calcBorders();
            hs.setStyles(this.wrapper, {
                left: (a.tpos + a.tb - a.cb) + "px",
                top: (d.tpos + a.tb - d.cb) + "px"
            });
            this.getOverlays();
            var b = a.full / d.full;
            a.calcExpanded();
            this.justify(a);
            d.calcExpanded();
            this.justify(d);
            if (this.overlayBox) {
                this.sizeOverlayBox(0, 1)
            }
            if (this.allowSizeReduction) {
                this.correctRatio(b);
                if (this.isImage && this.x.full > (this.x.imgSize || this.x.size)) {
                    this.createFullExpand();
                    if (this.overlays.length == 1) {
                        this.sizeOverlayBox()
                    }
                }
            }
            this.show()
        } 
        catch (c) {
            this.error(c)
        }
    },
    justify: function(f, b){
	
        var g, h = f.target, e = f == this.x ? "x" : "y";
        var d = false;
        var a = f.exp.allowSizeReduction;
        f.pos = Math.round(f.pos - ((f.get("wsize") - f.t) / 2));
        if (f.pos < f.scroll + f.marginMin) {
            f.pos = f.scroll + f.marginMin;
            d = true
        }
        if (!b && f.size < f.minSize) {
            f.size = f.minSize;
            a = false
        }
		//alert('x')
        if (f.pos + f.get("wsize") > f.scroll + f.clientSize - f.marginMax) {
            if (!b && d && a) {
                f.size = f.get(e == "y" ? "fitsize" : "maxsize")
				
            }
            else {
				//alert(f.get("wsize"))
				//alert(f.get("fitsize"))
                if (f.get("wsize") < f.get("fitsize")) {
                    f.pos = f.scroll + f.clientSize - f.marginMax - f.get("wsize")
					//alert(f.scroll)
					//alert(f.clientSize)
					//alert(f.marginMax)
					//alert(f.get("wsize"))
                }
                else {
                    f.pos = f.scroll + f.marginMin;
                    if (!b && a) {
                        f.size = f.get(e == "y" ? "fitsize" : "maxsize")
                    }
                }
            }
        }
        if (!b && f.size < f.minSize) {
            f.size = f.minSize;
            a = false
        }
        if (f.pos < f.marginMin) {
            var c = f.pos;
            f.pos = f.marginMin;
            if (a && !b) {
                f.size = f.size - (f.pos - c)
            }
        }
    },
    correctRatio: function(c){
        var a = this.x, g = this.y, e = false, d = Math.min(a.full, a.size), b = Math.min(g.full, g.size), f = (this.useBox || hs.padToMinWidth);
        if (d / b > c) {
            d = b * c;
            if (d < a.minSize) {
                d = a.minSize;
                b = d / c
            }
            e = true
        }
        else {
            if (d / b < c) {
                b = d / c;
                e = true
            }
        }
        if (hs.padToMinWidth && a.full < a.minSize) {
            a.imgSize = a.full;
            g.size = g.imgSize = g.full
        }
        else {
            if (this.useBox) {
                a.imgSize = d;
                g.imgSize = b
            }
            else {
                a.size = d;
                g.size = b
            }
        }
        this.fitOverlayBox(f ? null : c);
        if (f && g.size < g.imgSize) {
            g.imgSize = g.size;
            a.imgSize = g.size * c
        }
        if (e || f) {
            a.pos = a.tpos - a.cb + a.tb;
            a.minSize = a.size;
            this.justify(a, true);
            g.pos = g.tpos - g.cb + g.tb;
            g.minSize = g.size;
            this.justify(g, true);
            if (this.overlayBox) {
                this.sizeOverlayBox()
            }
        }
    },
    fitOverlayBox: function(b){
        var a = this.x, c = this.y;
        if (this.overlayBox) {
            while (c.size > this.minHeight && a.size > this.minWidth && c.get("wsize") > c.get("fitsize")) {
                c.size -= 10;
                if (b) {
                    a.size = c.size * b
                }
                this.sizeOverlayBox(0, 1)
            }
        }
    },
    show: function(){
        var a = this.x, b = this.y;
		//alert(this.y.pos)
	    //b.pos=b.tpos-b.cb+b.tb-(Math.round(b.size/2))
        this.doShowHide("hidden");
		
        this.changeSize(1, {
            wrapper: {
                width: a.get("wsize"),
                height: b.get("wsize"),
                left: a.pos,
                top: b.pos
            },
            content: {
                left: a.p1 + a.get("imgPad"),
                top: b.p1 + b.get("imgPad"),
                width: a.imgSize || a.size,
                height: b.imgSize || b.size
            }
			
        }, hs.expandDuration)
    },
    changeSize: function(b, h, c){
        if (this.outline && !this.outlineWhileAnimating) {
            if (b) {
                this.outline.setPosition()
            }
            else {
                this.outline.destroy()
            }
        }
        if (!b) {
            this.destroyOverlays()
        }
        var e = this, a = e.x, g = e.y, f = this.easing;
        if (!b) {
            f = this.easingClose || f
        }
        var d = b ? function(){
            if (e.outline) {
                e.outline.table.style.visibility = "visible"
            }
            setTimeout(function(){
                e.afterExpand()
            }, 50)
        }
 : function(){
            e.afterClose()
        };
        if (b) {
            hs.setStyles(this.wrapper, {
                width: a.t + "px",
                height: g.t + "px"
            })
        }
        if (this.fadeInOut) {
            hs.setStyles(this.wrapper, {
                opacity: b ? 0 : 1
            });
            hs.extend(h.wrapper, {
                opacity: b
            })
        }
        hs.animate(this.wrapper, h.wrapper, {
            duration: c,
            easing: f,
            step: function(k, i){
                if (e.outline && e.outlineWhileAnimating && i.prop == "top") {
                    var j = b ? i.pos : 1 - i.pos;
                    var l = {
                        w: a.t + (a.get("wsize") - a.t) * j,
                        h: g.t + (g.get("wsize") - g.t) * j,
                        x: a.tpos + (a.pos - a.tpos) * j,
                        y: g.tpos + (g.pos - g.tpos) * j
                    };
                    e.outline.setPosition(l, 0, 1)
                }
            }
        });
        hs.animate(this.content, h.content, c, f, d);
        if (b) {
            this.wrapper.style.visibility = "visible";
            this.content.style.visibility = "visible";
            this.a.className += " highslide-active-anchor"
        }
    },
    afterExpand: function(){
        this.isExpanded = true;
        this.focus();
        if (hs.upcoming && hs.upcoming == this.a) {
            hs.upcoming = null
        }
        this.prepareNextOutline();
        var c = hs.page, b = hs.mouse.x + c.scrollLeft, a = hs.mouse.y + c.scrollTop;
        this.mouseIsOver = this.x.pos < b && b < this.x.pos + this.x.get("wsize") && this.y.pos < a && a < this.y.pos + this.y.get("wsize");
        if (this.overlayBox) {
            this.showOverlays()
        }
    },
    prepareNextOutline: function(){
        var a = this.key;
        var b = this.outlineType;
        new hs.Outline(b, function(){
            try {
                hs.expanders[a].preloadNext()
            } 
            catch (c) {
            }
        })
    },
    preloadNext: function(){
        var b = this.getAdjacentAnchor(1);
        if (b && b.onclick.toString().match(/hs\.expand/)) {
            var a = hs.createElement("img", {
                src: hs.getSrc(b)
            })
        }
    },
    getAdjacentAnchor: function(c){
        var b = this.getAnchorIndex(), a = hs.anchors.groups[this.slideshowGroup || "none"];
        if (!a[b + c] && this.slideshow && this.slideshow.repeat) {
            if (c == 1) {
                return a[0]
            }
            else {
                if (c == -1) {
                    return a[a.length - 1]
                }
            }
        }
        return a[b + c] || null
    },
    getAnchorIndex: function(){
        var a = hs.getAnchors().groups[this.slideshowGroup || "none"];
        if (a) {
            for (var b = 0; b < a.length; b++) {
                if (a[b] == this.a) {
                    return b
                }
            }
        }
        return null
    },
    cancelLoading: function(){
        hs.expanders[this.key] = null;
        if (this.loading) {
            hs.loading.style.left = "-9999px"
        }
    },
    writeCredits: function(){
        this.credits = hs.createElement("a", {
            href: hs.creditsHref,
            className: "highslide-credits",
            innerHTML: hs.lang.creditsText,
            title: hs.lang.creditsTitle
        });
        this.createOverlay({
            overlayId: this.credits,
            position: this.creditsPosition || "top left"
        })
    },
    getInline: function(types, addOverlay){
        for (var i = 0; i < types.length; i++) {
            var type = types[i], s = null;
            if (!this[type + "Id"] && this.thumbsUserSetId) {
                this[type + "Id"] = type + "-for-" + this.thumbsUserSetId
            }
            if (this[type + "Id"]) {
                this[type] = hs.getNode(this[type + "Id"])
            }
            if (!this[type] && !this[type + "Text"] && this[type + "Eval"]) {
                try {
                    s = eval(this[type + "Eval"])
                } 
                catch (e) {
                }
            }
            if (!this[type] && this[type + "Text"]) {
                s = this[type + "Text"]
            }
            if (!this[type] && !s) {
                var next = this.a.nextSibling;
                while (next && !hs.isHsAnchor(next)) {
                    if ((new RegExp("highslide-" + type)).test(next.className || null)) {
                        this[type] = next.cloneNode(1);
                        break
                    }
                    next = next.nextSibling
                }
            }
            if (!this[type] && s) {
                this[type] = hs.createElement("div", {
                    className: "highslide-" + type,
                    innerHTML: s
                })
            }
            if (addOverlay && this[type]) {
                var o = {
                    position: (type == "heading") ? "above" : "below"
                };
                for (var x in this[type + "Overlay"]) {
                    o[x] = this[type + "Overlay"][x]
                }
                o.overlayId = this[type];
                this.createOverlay(o)
            }
        }
    },
    doShowHide: function(a){
        if (hs.hideSelects) {
            this.showHideElements("SELECT", a)
        }
        if (hs.hideIframes) {
            this.showHideElements("IFRAME", a)
        }
        if (hs.geckoMac) {
            this.showHideElements("*", a)
        }
    },
    showHideElements: function(c, b){
        var e = document.getElementsByTagName(c);
        var a = c == "*" ? "overflow" : "visibility";
        for (var f = 0; f < e.length; f++) {
            if (a == "visibility" || (document.defaultView.getComputedStyle(e[f], "").getPropertyValue("overflow") == "auto" || e[f].getAttribute("hidden-by") != null)) {
                var h = e[f].getAttribute("hidden-by");
                if (b == "visible" && h) {
                    h = h.replace("[" + this.key + "]", "");
                    e[f].setAttribute("hidden-by", h);
                    if (!h) {
                        e[f].style[a] = e[f].origProp
                    }
                }
                else {
                    if (b == "hidden") {
                        var k = hs.getPosition(e[f]);
                        k.w = e[f].offsetWidth;
                        k.h = e[f].offsetHeight;
                        var j = (k.x + k.w < this.x.get("opos") || k.x > this.x.get("opos") + this.x.get("osize"));
                        var g = (k.y + k.h < this.y.get("opos") || k.y > this.y.get("opos") + this.y.get("osize"));
                        var d = hs.getWrapperKey(e[f]);
                        if (!j && !g && d != this.key) {
                            if (!h) {
                                e[f].setAttribute("hidden-by", "[" + this.key + "]");
                                e[f].origProp = e[f].style[a];
                                e[f].style[a] = "hidden"
                            }
                            else {
                                if (h.indexOf("[" + this.key + "]") == -1) {
                                    e[f].setAttribute("hidden-by", h + "[" + this.key + "]")
                                }
                            }
                        }
                        else {
                            if ((h == "[" + this.key + "]" || hs.focusKey == d) && d != this.key) {
                                e[f].setAttribute("hidden-by", "");
                                e[f].style[a] = e[f].origProp || ""
                            }
                            else {
                                if (h && h.indexOf("[" + this.key + "]") > -1) {
                                    e[f].setAttribute("hidden-by", h.replace("[" + this.key + "]", ""))
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    focus: function(){
        this.wrapper.style.zIndex = hs.zIndexCounter++;
        for (var a = 0; a < hs.expanders.length; a++) {
            if (hs.expanders[a] && a == hs.focusKey) {
                var b = hs.expanders[a];
                b.content.className += " highslide-" + b.contentType + "-blur";
                b.content.style.cursor = hs.ie ? "hand" : "pointer";
                b.content.title = hs.lang.focusTitle
            }
        }
        if (this.outline) {
            this.outline.table.style.zIndex = this.wrapper.style.zIndex
        }
        this.content.className = "highslide-" + this.contentType;
        this.content.title = hs.lang.restoreTitle;
        if (hs.restoreCursor) {
            hs.styleRestoreCursor = window.opera ? "pointer" : "url(" + hs.graphicsDir + hs.restoreCursor + "), pointer";
            if (hs.ie && hs.uaVersion < 6) {
                hs.styleRestoreCursor = "hand"
            }
            this.content.style.cursor = hs.styleRestoreCursor
        }
        hs.focusKey = this.key;
        hs.addEventListener(document, window.opera ? "keypress" : "keydown", hs.keyHandler)
    },
    moveTo: function(a, b){
        this.x.setPos(a);
        this.y.setPos(b)
    },
    resize: function(d){
        var a, b, c = d.width / d.height;
        a = Math.max(d.width + d.dX, Math.min(this.minWidth, this.x.full));
        if (this.isImage && Math.abs(a - this.x.full) < 12) {
            a = this.x.full
        }
        b = a / c;
        if (b < Math.min(this.minHeight, this.y.full)) {
            b = Math.min(this.minHeight, this.y.full);
            if (this.isImage) {
                a = b * c
            }
        }
        this.resizeTo(a, b)
    },
    resizeTo: function(a, b){
        this.y.setSize(b);
        this.x.setSize(a)
    },
    close: function(){
        if (this.isClosing || !this.isExpanded) {
            return
        }
        this.isClosing = true;
        hs.removeEventListener(document, window.opera ? "keypress" : "keydown", hs.keyHandler);
        try {
            this.content.style.cursor = "default";
            this.changeSize(0, {
                wrapper: {
                    width: this.x.t,
                    height: this.y.t,
                    left: this.x.tpos - this.x.cb + this.x.tb,
                    top: this.y.tpos - this.y.cb + this.y.tb
                },
                content: {
                    left: 0,
                    top: 0,
                    width: this.x.t,
                    height: this.y.t
                }
            }, hs.restoreDuration)
        } 
        catch (a) {
            this.afterClose()
        }
    },
    createOverlay: function(d){
        var c = d.overlayId;
        if (typeof c == "string") {
            c = hs.getNode(c)
        }
        if (d.html) {
            c = hs.createElement("div", {
                innerHTML: d.html
            })
        }
        if (!c || typeof c == "string") {
            return
        }
        c.style.display = "block";
        this.genOverlayBox();
        var b = d.width && /^[0-9]+(px|%)$/.test(d.width) ? d.width : "auto";
        if (/^(left|right)panel$/.test(d.position) && !/^[0-9]+px$/.test(d.width)) {
            b = "200px"
        }
        var a = hs.createElement("div", {
            id: "hsId" + hs.idCounter++,
            hsId: d.hsId
        }, {
            position: "absolute",
            visibility: "hidden",
            width: b,
            direction: hs.lang.cssDirection || "",
            opacity: 0
        }, this.overlayBox, true);
        a.appendChild(c);
        hs.extend(a, {
            opacity: 1,
            offsetX: 0,
            offsetY: 0,
            dur: (d.fade === 0 || d.fade === false || (d.fade == 2 && hs.ie)) ? 0 : 250
        });
        hs.extend(a, d);
        if (this.gotOverlays) {
            this.positionOverlay(a);
            if (!a.hideOnMouseOut || this.mouseIsOver) {
                hs.animate(a, {
                    opacity: a.opacity
                }, a.dur)
            }
        }
        hs.push(this.overlays, hs.idCounter - 1)
    },
    positionOverlay: function(c){
        var d = c.position || "middle center", b = c.offsetX, a = c.offsetY;
        if (c.parentNode != this.overlayBox) {
            this.overlayBox.appendChild(c)
        }
        if (/left$/.test(d)) {
            c.style.left = b + "px"
        }
        if (/center$/.test(d)) {
            hs.setStyles(c, {
                left: "50%",
                marginLeft: (b - Math.round(c.offsetWidth / 2)) + "px"
            })
        }
        if (/right$/.test(d)) {
            c.style.right = -b + "px"
        }
        if (/^leftpanel$/.test(d)) {
            hs.setStyles(c, {
                right: "100%",
                marginRight: this.x.cb + "px",
                top: -this.y.cb + "px",
                bottom: -this.y.cb + "px",
                overflow: "auto"
            });
            this.x.p1 = c.offsetWidth
        }
        else {
            if (/^rightpanel$/.test(d)) {
                hs.setStyles(c, {
                    left: "100%",
                    marginLeft: this.x.cb + "px",
                    top: -this.y.cb + "px",
                    bottom: -this.y.cb + "px",
                    overflow: "auto"
                });
                this.x.p2 = c.offsetWidth
            }
        }
        if (/^top/.test(d)) {
            c.style.top = a + "px"
        }
        if (/^middle/.test(d)) {
            hs.setStyles(c, {
                top: "50%",
                marginTop: (a - Math.round(c.offsetHeight / 2)) + "px"
            })
        }
        if (/^bottom/.test(d)) {
            c.style.bottom = -a + "px"
        }
        if (/^above$/.test(d)) {
            hs.setStyles(c, {
                left: (-this.x.p1 - this.x.cb) + "px",
                right: (-this.x.p2 - this.x.cb) + "px",
                bottom: "100%",
                marginBottom: this.y.cb + "px",
                width: "auto"
            });
            this.y.p1 = c.offsetHeight
        }
        else {
            if (/^below$/.test(d)) {
                hs.setStyles(c, {
                    position: "relative",
                    left: (-this.x.p1 - this.x.cb) + "px",
                    right: (-this.x.p2 - this.x.cb) + "px",
                    top: "100%",
                    marginTop: this.y.cb + "px",
                    width: "auto"
                });
                this.y.p2 = c.offsetHeight;
                c.style.position = "absolute"
            }
        }
    },
    getOverlays: function(){
        this.getInline(["heading", "caption"], true);
        if (this.heading && this.dragByHeading) {
            this.heading.className += " highslide-move"
        }
        if (hs.showCredits) {
            this.writeCredits()
        }
        for (var a = 0; a < hs.overlays.length; a++) {
            var d = hs.overlays[a], e = d.thumbnailId, b = d.slideshowGroup;
            if ((!e && !b) || (e && e == this.thumbsUserSetId) || (b && b === this.slideshowGroup)) {
                this.createOverlay(d)
            }
        }
        var c = [];
        for (var a = 0; a < this.overlays.length; a++) {
            var d = hs.$("hsId" + this.overlays[a]);
            if (/panel$/.test(d.position)) {
                this.positionOverlay(d)
            }
            else {
                hs.push(c, d)
            }
        }
        for (var a = 0; a < c.length; a++) {
            this.positionOverlay(c[a])
        }
        this.gotOverlays = true
    },
    genOverlayBox: function(){
        if (!this.overlayBox) {
            this.overlayBox = hs.createElement("div", {
                className: this.wrapperClassName
            }, {
                position: "absolute",
                width: (this.x.size || (this.useBox ? this.width : null) || this.x.full) + "px",
                height: (this.y.size || this.y.full) + "px",
                visibility: "hidden",
                overflow: "hidden",
                zIndex: hs.ie ? 4 : null
            }, hs.container, true)
        }
    },
    sizeOverlayBox: function(f, d){
        var c = this.overlayBox, a = this.x, h = this.y;
        hs.setStyles(c, {
            width: a.size + "px",
            height: h.size + "px"
        });
        if (f || d) {
            for (var e = 0; e < this.overlays.length; e++) {
                var g = hs.$("hsId" + this.overlays[e]);
                var b = (hs.ieLt7 || document.compatMode == "BackCompat");
                if (g && /^(above|below)$/.test(g.position)) {
                    if (b) {
                        g.style.width = (c.offsetWidth + 2 * a.cb + a.p1 + a.p2) + "px"
                    }
                    h[g.position == "above" ? "p1" : "p2"] = g.offsetHeight
                }
                if (g && b && /^(left|right)panel$/.test(g.position)) {
                    g.style.height = (c.offsetHeight + 2 * h.cb) + "px"
                }
            }
        }
        if (f) {
            hs.setStyles(this.content, {
                top: h.p1 + "px"
            });
            hs.setStyles(c, {
                top: (h.p1 + h.cb) + "px"
            })
        }
    },
    showOverlays: function(){
        var a = this.overlayBox;
        a.className = "";
        hs.setStyles(a, {
            top: (this.y.p1 + this.y.cb) + "px",
            left: (this.x.p1 + this.x.cb) + "px",
            overflow: "visible"
        });
        if (hs.safari) {
            a.style.visibility = "visible"
        }
        this.wrapper.appendChild(a);
        for (var c = 0; c < this.overlays.length; c++) {
            var d = hs.$("hsId" + this.overlays[c]);
            d.style.zIndex = 4;
            if (!d.hideOnMouseOut || this.mouseIsOver) {
                d.style.visibility = "visible";
                hs.setStyles(d, {
                    visibility: "visible",
                    display: ""
                });
                hs.animate(d, {
                    opacity: d.opacity
                }, d.dur)
            }
        }
    },
    destroyOverlays: function(){
        if (!this.overlays.length) {
            return
        }
        hs.discardElement(this.overlayBox)
    },
    createFullExpand: function(){
        this.fullExpandLabel = hs.createElement("a", {
            href: "javascript:hs.expanders[" + this.key + "].doFullExpand();",
            title: hs.lang.fullExpandTitle,
            className: "highslide-full-expand"
        });
        this.createOverlay({
            overlayId: this.fullExpandLabel,
            position: hs.fullExpandPosition,
            hideOnMouseOut: true,
            opacity: hs.fullExpandOpacity
        })
    },
    doFullExpand: function(){
        try {
            if (this.fullExpandLabel) {
                hs.discardElement(this.fullExpandLabel)
            }
            this.focus();
            var b = this.x.size;
            this.resizeTo(this.x.full, this.y.full);
            var a = this.x.pos - (this.x.size - b) / 2;
            if (a < hs.marginLeft) {
                a = hs.marginLeft
            }
            this.moveTo(a, this.y.pos);
            this.doShowHide("hidden")
        } 
        catch (c) {
            this.error(c)
        }
    },
    afterClose: function(){
        this.a.className = this.a.className.replace("highslide-active-anchor", "");
        this.doShowHide("visible");
        if (this.outline && this.outlineWhileAnimating) {
            this.outline.destroy()
        }
        hs.discardElement(this.wrapper);
        hs.expanders[this.key] = null;
        hs.reOrder()
    }
};
if (hs.ie) {
    (function(){
        try {
            document.documentElement.doScroll("left")
        } 
        catch (a) {
            setTimeout(arguments.callee, 50);
            return
        }
        hs.ready()
    })()
}
hs.addEventListener(document, "DOMContentLoaded", hs.ready);
hs.addEventListener(window, "load", hs.ready);
hs.langDefaults = hs.lang;
var HsExpander = hs.Expander;
hs.addEventListener(window, "load", function(){
    if (hs.expandCursor) {
        var c = ".highslide img", d = "cursor: url(" + hs.graphicsDir + hs.expandCursor + "), pointer !important;";
        var a = hs.createElement("style", {
            type: "text/css"
        }, null, document.getElementsByTagName("HEAD")[0]);
        if (!hs.ie) {
            a.appendChild(document.createTextNode(c + " {" + d + "}"))
        }
        else {
            var b = document.styleSheets[document.styleSheets.length - 1];
            if (typeof(b.addRule) == "object") {
                b.addRule(c, d)
            }
        }
    }
});
hs.addEventListener(window, "resize", function(){
    hs.page = hs.getPageSize()
});
hs.addEventListener(document, "mousemove", function(a){
    hs.mouse = {
        x: a.clientX,
        y: a.clientY
    }
});
hs.addEventListener(document, "mousedown", hs.mouseClickHandler);
hs.addEventListener(document, "mouseup", hs.mouseClickHandler);
hs.addEventListener(document, "ready", hs.getAnchors);
hs.addEventListener(window, "load", hs.preloadImages);


var whirlImg=function(){
	this.isIE = (document.uniqueID)?1:0,
	this.i=0,
	this.w=0,
	this.h=0,
	this.w2=0,
	this.h2=0,
	this.ienum=1//开关
}
whirlImg.prototype.rotateR=function (imageid,width,height,orientation){//left==1,right==0
	if(document.getElementById(imageid+'t') && this.w2==0){
		this.w2=document.getElementById(imageid+'t').clientWidth;
		this.h2=document.getElementById(imageid+'t').clientHeight;
		$('#'+imageid+'t').parent().remove();
	}
	this.w=width;
	this.h=height;
	var image=document.getElementById(imageid);
	var object = image.parentNode;
	if(this.isIE){
		if(!orientation){//right
			this.i++;
			image.style.filter="progid:DXImageTransform.Microsoft.BasicImage(Rotation="+this.i+")";
		}else if(orientation==1){//left
			if(this.i==0){
				this.i=3;
			}else{
				this.i--;
			}
			image.style.filter="progid:DXImageTransform.Microsoft.BasicImage(Rotation="+this.i+")";
		}
		if(this.i>3) {this.i=0};
		
	}
	else{
	try{
	var canvas = document.createElement('canvas');
	if(canvas.getContext("2d")){
		canvas.id = image.id;
		canvas.alt = image.alt;
		canvas.name = image.name;
		canvas.title = image.title;
		canvas.className = image.className;
		//canvas.style.cssText = image.style.cssText;
		canvas.height = this.w2;
		canvas.width = this.h2;
		object.replaceChild(canvas,image);
		var context = canvas.getContext("2d");
		context.translate(this.h2, 0);
		context.rotate(Math.PI*0.5);
		context.drawImage(image,0,0);
		var hk=this.w2;
		this.w2=this.h2;
		this.h2=hk;
		document.getElementById(imageid).style.width=this.h+'px';
		document.getElementById(imageid).style.height=this.w+'px';
	}
	}catch(e){}
	}
	
	if(this.isIE){
		if(this.ienum==1){
			var hkie=this.w;
			this.w=this.h;
			this.h=hkie;
			this.ienum=2;
		}else if(this.ienum==2){
			this.ienum=1;
		}
		var box_d=document.getElementById(imageid).parentNode;
		box_d.style.height=this.h+4+'px';
		box_d.style.width=this.w+4+'px';
		//table
		var box_t=box_d.previousSibling;
		box_t.style.height=this.h+24+'px';
		box_t.style.width=this.w+24+'px';
		//td
		var box_td=box_t.firstChild.firstChild.nextSibling.firstChild.nextSibling;
		box_td.style.height=this.h-16+'px';
		box_td.style.width=this.w-16+'px';
		//IE6 table有单独的纵向背景条
		var box_td_div1=box_td.previousSibling.firstChild;
		var box_td_div2=box_td.nextSibling.firstChild;
		if(box_td_div1 && box_td_div2 && box_td.nextSibling && box_td.previousSibling){
			box_td.nextSibling.style.height=this.h-16+'px';
			box_td.previousSibling.style.height=this.h-16+'px';
			box_td_div1.style.height=this.h-16+'px';
			box_td_div2.style.height=this.h-16+'px';
		}
	}else{
		//div
		var box_d=document.getElementById(imageid).parentNode;
		box_d.style.width=this.h+4+'px';
		box_d.style.height=this.w+4+'px';
		//table
		var box_t=box_d.previousSibling;
		box_t.style.width=this.h+24+'px';
		box_t.style.height=this.w+24+'px';
		//td
		var box_td=box_t.firstChild.firstChild.nextSibling.firstChild.nextSibling;
		box_td.style.width=this.h-16+'px';
		box_td.style.height=this.w-16+'px';
	}
	
},
whirlImg.prototype.rotateL=function(imageid,width,height,orientation){//left==1,right==0
	if(this.isIE){
		this.rotateR(imageid,width,height,1);
	}else{//向右三次等于向左一次
		this.rotateR(imageid,width,height,0);
		this.rotateR(imageid,height,width,0);//important
		this.rotateR(imageid,width,height,0);
	}
}
function whirlImg_init(imgid,orientation){//left==1,right==0
	var img=document.getElementById(imgid);
	var w=img.clientWidth;
	var h=img.clientHeight;
	if(!whirlImg_init.obj){
		whirlImg_init.obj={};
	}
	if(!whirlImg_init.obj[imgid]){
		whirlImg_init.obj[imgid]=new whirlImg()
	}
	if(orientation==1){
		whirlImg_init.obj[imgid].rotateL(imgid,w,h,1)
	}else if(orientation==0){
		whirlImg_init.obj[imgid].rotateR(imgid,w,h,0)
	}
}