// 2002
jQuery.fn.fancyZoom = function (options) {
    var options = options || {};
    var directory = options && options.directory ? options.directory : 'images';
    var zooming = false;
    if ($('#zoom').length == 0) {
        var ext = $.browser.msie ? 'gif' : 'png';
        var html = '<div id="zoom" style="display:none;"> \
                  <table id="zoom_table" style="border-collapse:collapse; width:100%; height:100%;"> \
                    <tbody> \
                      <tr> \
                        <td class="tl" style="background:url(' + directory + '/tl.' + ext + ') 0 0 no-repeat; width:20px; height:20px; overflow:hidden;" /> \
                        <td class="tm" style="background:url(' + directory + '/tm.' + ext + ') 0 0 repeat-x; height:20px; overflow:hidden;" /> \
                        <td class="tr" style="background:url(' + directory + '/tr.' + ext + ') 100% 0 no-repeat; width:20px; height:20px; overflow:hidden;" /> \
                      </tr> \
                      <tr> \
                        <td class="ml" style="background:url(' + directory + '/ml.' + ext + ') 0 0 repeat-y; width:20px; overflow:hidden;" /> \
                        <td class="mm" style="background:#fff; vertical-align:top; padding:10px;"> \
                          <div id="zoom_content"> \
                          </div> \
                        </td> \
                        <td class="mr" style="background:url(' + directory + '/mr.' + ext + ') 100% 0 repeat-y;  width:20px; overflow:hidden;" /> \
                      </tr> \
                      <tr> \
                        <td class="bl" style="background:url(' + directory + '/bl.' + ext + ') 0 100% no-repeat; width:20px; height:20px; overflow:hidden;" /> \
                        <td class="bm" style="background:url(' + directory + '/bm.' + ext + ') 0 100% repeat-x; height:20px; overflow:hidden;" /> \
                        <td class="br" style="background:url(' + directory + '/br.' + ext + ') 100% 100% no-repeat; width:20px; height:20px; overflow:hidden;" /> \
                      </tr> \
                    </tbody> \
                  </table> \
                  <a href="#" title="Close" id="zoom_close" style="position:absolute; top:0; left:0;"> \
                    <img src="' + directory + '/closebox.' + ext + '" alt="Close" style="border:none; margin:0; padding:0;" /> \
                  </a> \
                </div>';
        $('body').append(html);
        $('html').click(function (e) {
            if ($(e.target).parents('#zoom:visible').length == 0) hide();
        });
        $(document).keyup(function (event) {
            if (event.keyCode == 27 && $('#zoom:visible').length > 0) hide();
        });
        $('#zoom_close').click(hide);
    }
    var zoom = $('#zoom');
    var zoom_table = $('#zoom_table');
    var zoom_close = $('#zoom_close');
    var zoom_content = $('#zoom_content');
    var middle_row = $('td.ml,td.mm,td.mr');
    this.each(function (i) {
        $($(this).attr('href')).hide();
        $(this).click(show);
    });
    return this;

    function show(e) {
        if (zooming) return false;
        zooming = true;
        var content_div = $($(this).attr('href'));
        var zoom_width = options.width;
        var zoom_height = options.height;
        var width = window.innerWidth || (window.document.documentElement.clientWidth || window.document.body.clientWidth);
        var height = window.innerHeight || (window.document.documentElement.clientHeight || window.document.body.clientHeight);
        var x = window.pageXOffset || (window.document.documentElement.scrollLeft || window.document.body.scrollLeft);
        var y = window.pageYOffset || (window.document.documentElement.scrollTop || window.document.body.scrollTop);
        var window_size = {
            'width': width,
            'height': height,
            'x': x,
            'y': y
        }
        var width = (zoom_width || content_div.width()) + 60;
        var height = (zoom_height || content_div.height()) + 60;
        var d = window_size;
        var newTop = Math.max((d.height / 2) - (height / 2) + y, 0);
        var newLeft = (d.width / 2) - (width / 2);
        var curTop = e.pageY;
        var curLeft = e.pageX;
        zoom_close.attr('curTop', curTop);
        zoom_close.attr('curLeft', curLeft);
        zoom_close.attr('scaleImg', options.scaleImg ? 'true' : 'false');
        $('#zoom').hide().css({
            position: 'absolute',
            top: curTop + 'px',
            left: curLeft + 'px',
            width: '1px',
            height: '1px'
        });
        fixBackgroundsForIE();
        zoom_close.hide();
        if (options.closeOnClick) {
            $('#zoom').click(hide);
        }
        if (options.scaleImg) {
            zoom_content.html(content_div.html());
            $('#zoom_content img').css('width', '100%');
        } else {
            zoom_content.html('');
        }
        $('#zoom').animate({
            top: newTop + 'px',
            left: newLeft + 'px',
            opacity: "show",
            width: width,
            height: height
        },
        500, null, function () {
            if (options.scaleImg != true) {
                zoom_content.html(content_div.html());
            }
            unfixBackgroundsForIE();
            zoom_close.show();
            zooming = false;
        })
        return false;
    }


    function hide() {
        if (zooming) return false;
        zooming = true;
        $('#zoom').unbind('click');
        fixBackgroundsForIE();
        if (zoom_close.attr('scaleImg') != 'true') {
            zoom_content.html('');
        }
        zoom_close.hide();
        $('#zoom').animate({
            top: zoom_close.attr('curTop') + 'px',
            left: zoom_close.attr('curLeft') + 'px',
            opacity: "hide",
            width: '1px',
            height: '1px'
        },
        500, null, function () {
            if (zoom_close.attr('scaleImg') == 'true') {
                zoom_content.html('');
            }
            unfixBackgroundsForIE();
            zooming = false;
        });
        return false;
    }


    function switchBackgroundImagesTo(to) {
        $('#zoom_table td').each(function (i) {
            var bg = $(this).css('background-image').replace(/\.(png|gif|none)\"\)$/, '.' + to + '")');
            $(this).css('background-image', bg);
        });
        var close_img = zoom_close.children('img');
        var new_img = close_img.attr('src').replace(/\.(png|gif|none)$/, '.' + to);
        close_img.attr('src', new_img);
    }


    function fixBackgroundsForIE() {
        if ($.browser.msie && parseFloat($.browser.version) >= 7) {
            switchBackgroundImagesTo('gif');
        }
    }


    function unfixBackgroundsForIE() {
        if ($.browser.msie && $.browser.version >= 7) {
            switchBackgroundImagesTo('png');
        }
    }
}

// 2001
jQuery.extend({
    jget: {},
    url: window.location.href.replace(/^[^\?]+\??/, ''),
    parseQuery: function (query) {
        var Params = {};
        if (!query) {
            return Params;
        }
        var Pairs = query.split(/[;&]/);
        for (var i = 0; i < Pairs.length; i++) {
            var KeyVal = Pairs[i].split('=');
            if (!KeyVal || KeyVal.length != 2) {
                continue;
            }
            var key = unescape(KeyVal[0]);
            var val = unescape(KeyVal[1]);
            val = val.replace(/\+/g, ' ');
            Params[key] = val;
        }
        return Params;
    },
    getQueryString: function () {
        this.jget = this.parseQuery(this.url);
    },
    debug: function (message) {
        if (!$.browser.msie) {
            console.info(message);
        } else if ($.browser.safari) {
            window.console.log(message);
        } else {
            alert(message);
        }
    }
});
// 2000
$.getQueryString();
jQuery.fn.labelify = function (settings) {
    settings = jQuery.extend({
        text: "title",
        labelledClass: ""
    },
    settings);
    var lookups = {
        title: function (input) {
            return $(input).attr("title");
        },
        label: function (input) {
            return $("label[for=" + input.id + "]").text();
        }
    };
    var lookup;
    var jQuery_labellified_elements = $(this);
    return $(this).each(function () {
        if (typeof settings.text === "string") {
            lookup = lookups[settings.text];
        } else {
            lookup = settings.text;
        };
        if (typeof lookup !== "function") {
            return;
        }
        var lookupval = lookup(this);
        if (!lookupval) {
            return;
        }
        $(this).data("label", lookup(this).replace(/\n/g, ''));
        $(this).focus(function () {
            if (this.value === $(this).data("label")) {
                this.value = this.defaultValue;
                $(this).removeClass(settings.labelledClass);
            }
        }).blur(function () {
            if (this.value === this.defaultValue) {
                this.value = $(this).data("label");
                $(this).addClass(settings.labelledClass);
            }
        });
        var removeValuesOnExit = function () {
            jQuery_labellified_elements.each(function () {
                if (this.value === $(this).data("label")) {
                    this.value = this.defaultValue;
                    $(this).removeClass(settings.labelledClass);
                }
            })
        };
        $(this).parents("form").submit(removeValuesOnExit);
        $(window).unload(removeValuesOnExit);
        if (this.value !== this.defaultValue) {
            return;
        }
        this.value = $(this).data("label");
        $(this).addClass(settings.labelledClass);
    });
};;

// 3000
(function ($) {
    var $scrollTo = $.scrollTo = function (target, duration, settings) {
        $scrollTo.window().scrollTo(target, duration, settings);
    };
    $scrollTo.defaults = {
        axis: 'y',
        duration: 1
    };
    $scrollTo.window = function () {
        return $($.browser.safari ? 'body' : 'html');
    };
    $.fn.scrollTo = function (target, duration, settings) {
        if (typeof duration == 'object') {
            settings = duration;
            duration = 0;
        }
        settings = $.extend({},
        $scrollTo.defaults, settings);
        duration = duration || settings.speed || settings.duration;
        settings.queue = settings.queue && settings.axis.length > 1;
        if (settings.queue) duration /= 2;
        settings.offset = both(settings.offset);
        settings.over = both(settings.over);
        return this.each(function () {
            var elem = this,
            $elem = $(elem),
            t = target,
            toff,
            attr = {},
            win = $elem.is('html,body');
            switch (typeof t) {
            case 'number':
            case 'string':
                if (/^([+-]=)?\d+(px)?$/.test(t)) {
                    t = both(t);
                    break;
                }
                t = $(t, this);
            case 'object':
                if (t.is || t.style) toff = (t = $(t)).offset();
            }
            $.each(settings.axis.split(''), function (i, axis) {
                var Pos = axis == 'x' ? 'Left' : 'Top',
                pos = Pos.toLowerCase(),
                key = 'scroll' + Pos,
                act = elem[key],
                Dim = axis == 'x' ? 'Width' : 'Height',
                dim = Dim.toLowerCase();
                if (toff) {
                    attr[key] = toff[pos] + (win ? 0 : act - $elem.offset()[pos]);
                    if (settings.margin) {
                        attr[key] -= parseInt(t.css('margin' + Pos)) || 0;
                        attr[key] -= parseInt(t.css('border' + Pos + 'Width')) || 0;
                    }
                    attr[key] += settings.offset[pos] || 0;
                    if (settings.over[pos]) attr[key] += t[dim]() * settings.over[pos];
                } else attr[key] = t[pos];
                if (/^\d+$/.test(attr[key])) attr[key] = attr[key] <= 0 ? 0 : Math.min(attr[key], max(Dim));
                if (!i && settings.queue) {
                    if (act != attr[key]) animate(settings.onAfterFirst);
                    delete attr[key];
                }
            });
            animate(settings.onAfter);

            function animate(callback) {
                $elem.animate(attr, duration, settings.easing, callback &&
                function () {
                    callback.call(this, target);
                });
            };

            function max(Dim) {
                var el = win ? $.browser.opera ? document.body : document.documentElement : elem;
                return el['scroll' + Dim] - el['client' + Dim];
            };
        });
    };

    function both(val) {
        return typeof val == 'object' ? val : {
            top: val,
            left: val
        };
    };
})(jQuery);;
// 4000
(function ($) {
    var URI = location.href.replace(/#.*/, '');
    var $localScroll = $.localScroll = function (settings) {
        $('body').localScroll(settings);
    };
    $localScroll.defaults = {
        duration: 1000,
        axis: 'y',
        event: 'click',
        stop: true
    };
    $localScroll.hash = function (settings) {
        settings = $.extend({},
        $localScroll.defaults, settings);
        settings.hash = false;
        if (location.hash) setTimeout(function () {
            scroll(0, location, settings);
        },
        0);
    };
    $.fn.localScroll = function (settings) {
        settings = $.extend({},
        $localScroll.defaults, settings);
        return (settings.persistent || settings.lazy) ? this.bind(settings.event, function (e) {
            var a = $([e.target, e.target.parentNode]).filter(filter)[0];
            a && scroll(e, a, settings);
        }) : this.find('a,area').filter(filter).bind(settings.event, function (e) {
            scroll(e, this, settings);
        }).end().end();

        function filter() {
            return !! this.href && !!this.hash && this.href.replace(this.hash, '') == URI && (!settings.filter || $(this).is(settings.filter));
        };
    };

    function scroll(e, link, settings) {
        var id = link.hash.slice(1),
        elem = document.getElementById(id) || document.getElementsByName(id)[0];
        if (elem) {
            e && e.preventDefault();
            var $target = $(settings.target || $.scrollTo.window());
            if (settings.lock && $target.is(':animated') || settings.onBefore && settings.onBefore.call(link, e, elem, $target) === false) return;
            if (settings.stop) $target.queue('fx', []).stop();
            $target.scrollTo(elem, settings).trigger('notify.serialScroll', [elem]);
            if (settings.hash) $target.queue(function () {
                location = link.hash;
                $(this).dequeue();
            });
        }
    };
})(jQuery);

// 5000
(function ($) {
    $.fn.pager = function (options) {
        var opts = $.extend({},
        $.fn.pager.defaults, options);
        return this.each(function () {
            $(this).empty().append(renderpager(parseInt(options.pagenumber), parseInt(options.pagecount), options.buttonClickCallback));
            $('.pages li').mouseover(function () {
                document.body.style.cursor = "pointer";
            }).mouseout(function () {
                document.body.style.cursor = "auto";
            });
        });
    };

    function renderpager(pagenumber, pagecount, buttonClickCallback) {
        var $pager = $('<ul class="pages"></ul>');
        $pager.append(renderButton('first', pagenumber, pagecount, buttonClickCallback));
        var startPoint = 1;
        var endPoint = 9;
        if (pagenumber > 4) {
            startPoint = pagenumber - 4;
            endPoint = pagenumber + 4;
        }
        if (endPoint > pagecount) {
            startPoint = pagecount - 8;
            endPoint = pagecount;
        }
        if (startPoint < 1) {
            startPoint = 1;
        }
        for (var page = startPoint; page <= endPoint; page++) {
            var currentButton = $('<li class="page-number">' + (page) + '</li>');
            page == pagenumber + 1 ? currentButton.addClass('pgCurrent') : currentButton.click(function () {
                buttonClickCallback(this.firstChild.data);
            });
            currentButton.appendTo($pager);
        }
        $pager.append(renderButton('last', pagenumber, pagecount, buttonClickCallback));
        return $pager;
    }


    function renderButton(buttonLabel, pagenumber, pagecount, buttonClickCallback) {
        var $Button = $('<li class="pgNext">' + buttonLabel + '</li>');
        var destPage = 0;
        switch (buttonLabel) {
        case "first":
            destPage = 0;
            break;
        case "last":
            destPage = pagecount;
            break;
        }
        if (buttonLabel == "first") {
            pagenumber <= 0 ? $Button.addClass('pgEmpty') : $Button.click(function () {
                buttonClickCallback(destPage);
            });
        }
        if (buttonLabel == "last") {
            pagenumber >= pagecount - 1 ? $Button.addClass('pgEmpty') : $Button.click(function () {
                buttonClickCallback(destPage);
            });
        }
        return $Button;
    }
    $.fn.pager.defaults = {
        pagenumber: 1,
        pagecount: 1
    };
})(jQuery);;

// 6000
$(document).ready(function () {
    $("input#searchbox").labelify({
        labelledClass: "inputtip"
    });
    setTimeout(function () {
        var contentheight = $('#contentarea').height();
        var subnavheight = $('#subnav').height();
        $('#sidebar').height(contentheight);
        $('#sidecontent').height(contentheight - subnavheight - 20);
        $("#searchsubmit").replaceWith('<a href="#" id="searchsubmit">Go</a>');
        $("#searchsubmit").click(function () {
            $("#searchform").submit();
            return false;
        });
        $("#nlsubmit").replaceWith('<p class="buttonlinks"><a href="#" id="nlsubmit"><span>Submit</span></a></p>');
        $("#nlsubmit").click(function () {
            $("#newsletterform").submit();
            return false;
        });
        $('#signinform').hide();
        $('a.signin').click(function () {
            $("#signinform").slideToggle("normal");
            return false;
        });
        $("#wlpeLoginButton").replaceWith('<p class="buttonlinks"><a href="#" id="wlpeLoginButton"><span>Login</span></a></p>');
        $("#wlpeLoginButton").click(function () {
            $("#wlpeLoginForm").submit();
            return false;
        });
    },
    250);
    $("input#searchbox").labelify({
        labelledClass: "inputtip"
    });
    $('#mainvisual-items').localScroll({
        target: '#mainvisual-frames'
    });
    $("#mainvisual-items a").click(function (event) {
        event.preventDefault();
        $('#mainvisual-arrow').animate({
            top: $(this).attr("rel")
        });
    });
    $('.mim a.thumb').click(function () {
        var mimImage = $(this).attr('href') + ' .mim-image'
        $(mimImage).html('<img src="' + $(this).attr('rel') + '" alt="' + $(this + ' img').attr('alt') + '" />');
    });
    $('.mim a.thumb').fancyZoom({
        scaleImg: true,
        closeOnClick: true,
        directory: '/js/images',
        width: 700,
        height: 600
    });
});;
var Pushup = {
    Version: '1.0.3',
    options: {
        appearDelay: .5,
        fadeDelay: 6,
        images: '/img/icons/',
        message: 'Доступно важное обновление браузера',
        reminder: {
            hours: 6,
            message: 'Напомнить мне через #{hours}'
        },
        skip: true
    },
    updateLinks: {
        IE: 'http://www.microsoft.com/windows/downloads/ie/',
        Firefox: 'http://www.getfirefox.com',
        Safari: 'http://www.apple.com/safari/download/',
        Opera: 'http://www.opera.com/download/'
    },
    Browser: {
        IE: !!(window.attachEvent && navigator.userAgent.indexOf('Opera') === -1),
        Firefox: navigator.userAgent.indexOf('Firefox') > -1,
        Safari: navigator.userAgent.indexOf('AppleWebKit/') > -1 && /Apple/.test(navigator.vendor),
        Opera: navigator.userAgent.indexOf('Opera') > -1
    }
};
Pushup.conditions = {
    IE: (function (agent) {
        var version = /MSIE ([\d.]+)/.exec(agent);
        return version && parseFloat(version[1]) < 8;
    })(navigator.userAgent),
    Firefox: Pushup.Browser.Firefox && parseFloat(navigator.userAgent.match(/Firefox[\/\s](\d+)/)[1]) < 3,
    Safari: Pushup.Browser.Safari && parseFloat(navigator.userAgent.match(/AppleWebKit\/(\d+)/)[1]) < 500,
    Opera: Pushup.Browser.Opera && (!window.opera.version || parseFloat(window.opera.version()) < 10)
};
(function () {
    for (var browser in Pushup.Browser)
    if (Pushup.Browser[browser]) Pushup._browserUsed = browser;
    Pushup._updateBrowser = Pushup.conditions[Pushup._browserUsed] && Pushup._browserUsed;
    if (!Pushup._updateBrowser && Pushup.options.skip) return;

    function Extend(destination, source) {
        for (var property in source)
        destination[property] = source[property];
        return destination;
    }
    Extend(Pushup, {
        start: function () {
            if (/^(https?:\/\/|\/)/.test(this.options.images)) this.images = this.options.images;
            else {
                var srcMatch = /pushup(?:-[\w\d.]+)?\.js(.*)/,
                scripts = document.getElementsByTagName('script');
                for (var i = 0, l = scripts.length; i < l; i++) {
                    var s = scripts[i];
                    if (s.src && s.src.match(srcMatch)) this.images = s.src.replace(srcMatch, '') + this.options.images;
                }
            }
            if (Pushup._updateBrowser) this.show();
        },
        build: function () {
            this.pushup = document.createElement('div');
            Opacity.set(this.pushup, 0);
            this.pushup.id = 'pushup';
            this.pushup.className = 'bg';
            this.messageLink = this.pushup.appendChild(document.createElement('a'));
            this.messageLink.className = 'pushup_messageLink';
            this.messageLink.target = '_blank';
            this.messageLink.appendChild(this.icon = document.createElement('div'));
            this.icon.className = 'pushup_icon';
            this.messageLink.appendChild(this.message = document.createElement('span'));
            this.message.className = 'pushup_message';
            this.message.innerHTML = this.options.message;
            var hours = this.options.reminder.hours;
            if (hours && Pushup.cookiesEnabled) {
                this.pushup.appendChild(this.reminder = document.createElement('a'));
                this.reminder.href = '#';
                this.reminder.className = 'pushup_reminder';
                this.pushup.className = 'withReminder';
                var H = hours + ' час' + ((hours == 1 || hours == 21) ? '' : (hours == 2 || hours == 3 || hours == 4 || hours == 22 || hours == 23 || hours == 24) ? 'а' : 'ов'),
                message = this.options.reminder.message.replace('#{hours}', H);
                this.reminder.innerHTML = message;
            }
            if (Pushup.Browser.Opera && (!window.opera.version || parseFloat(window.opera.version()) < 9.25)) {
                this.messageLink.style.cssFloat = 'none';
                this.reminder.style.cssFloat = 'none';
            }
            Pushup.setBrowser(Pushup._updateBrowser);
            document.body.appendChild(this.pushup);
            Pushup.addEvents();
        },
        addEvents: function () {
            if (this.reminder) {
                Event.add(this.reminder, 'click', function (event) {
                    Event.stop(event);
                    Pushup.setReminder(Pushup.options.reminder.hours);
                    Pushup.fade();
                });
            }
            Event.add(this.pushup, 'mouseover', Pushup.clearFade);
            Event.add(this.pushup, 'mouseout', function () {
                Pushup.fade({
                    delay: Pushup.options.fadeDelay
                })
            });
        },
        setBrowser: function (browser) {
            browser = browser || 'IE';
            setPngBackground(this.icon, this.images + browser.toLowerCase() + '.png');
            this.messageLink.href = this.updateLinks[browser];
        },
        show: function () {
            var browser = typeof arguments[0] == 'string' ? arguments[0] : Pushup._browserUsed || 'IE',
            options = arguments[browser ? 1 : 0] || {};
            if (options.resetReminder) Pushup.resetReminder();
            if (!options.ignoreReminder && Pushup.cookiesEnabled && Cookie.get('_pushupBlocked')) return;
            if (!Pushup.pushup) Pushup.build();
            Opacity.set(Pushup.pushup, 0);
            Pushup.pushup.style.display = 'block';
            if (browser) Pushup.setBrowser(browser);
            this.appear({
                fadeAfter: true,
                delay: Pushup.options.appearDelay
            });
        },
        appear: function (delay) {
            Pushup.clearFade();
            var options = arguments[0] || {};
            return window.setTimeout(function () {
                Appear(Pushup.pushup, {
                    afterFinish: function () {
                        if (options.fadeAfter) Pushup.fade({
                            delay: Pushup.options.fadeDelay
                        });
                    }
                });
            },
            (options.delay || 0.01) * 1000);
        },
        clearFade: function () {
            if (Pushup._fadeTimer) {
                window.clearTimeout(Pushup._fadeTimer);
                Pushup._fadeTimer = null;
            }
        },
        fade: function () {
            var options = arguments[0] || {};
            Pushup._fadeTimer = window.setTimeout(function () {
                Fade(Pushup.pushup);
            },
            (options.delay || 0.01) * 1000);
        },
        setReminder: function (hours) {
            Cookie.set('_pushupBlocked', 'blocked', {
                duration: 1 / 24 * hours
            })
        },
        resetReminder: function () {
            Cookie.remove('_pushupBlocked')
        }
    });
    var Opacity = {
        set: function (element, value) {
            element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value;
        },
        get: function (element) {
            var opacity = element.style.opacity;
            return opacity ? parseFloat(opacity) : 1.0;
        }
    };
    if (Pushup.Browser.IE) {
        Opacity.get = function (element) {
            var opacity = element.style.opacity;
            if (!opacity && element.currentStyle) opacity = element.currentStyle[opacity];
            if (opacity = (element.style.filter || '').match(/alpha\(opacity=(.*)\)/)) if (opacity[1]) return parseFloat(opacity[1]) / 100;
            return 1.0;
        };
        Opacity.set = function (element, value) {
            function stripAlpha(filter) {
                return filter.replace(/alpha\([^\)]*\)/gi, '')
            }
            var currentStyle = element.currentStyle;
            if ((currentStyle && !currentStyle.hasLayout) || (!currentStyle && element.style.zoom == 'normal')) element.style.zoom = 1;
            var filter = element.style.filter,
            style = element.style;
            if (value == 1 || value === '')(filter = stripAlpha(filter)) ? style.filter = filter : style.filter = '';
            else style.filter = stripAlpha(filter) + 'alpha(opacity=' + (value * 100) + ')';
        };
    }


    function Appear(element) {
        var current = Opacity.get(element),
        options = arguments[1] || {};
        if (element.style.display != 'block') element.style.display = 'block';
        if (current < 1) {
            setTimeout(function () {
                Opacity.set(element, current += 0.05);
                Appear(element, options);
            },
            0.01);
        }
        else {
            if (Pushup.Browser.IE && element.style.filter) element.style.removeAttribute('filter');
            if (options.afterFinish) options.afterFinish.call();
        }
    }


    function Fade(element) {
        var current = Opacity.get(element),
        options = arguments[1] || {};
        if (current > 0) {
            setTimeout(function () {
                Opacity.set(element, current -= 0.05);
                Fade(element, options);
            },
            0.01);
        }
        else {
            element.style.display = 'none';
            if (options.afterFinish) options.afterFinish.call();
        }
    }


    function setPngBackground(element, url) {
        var options = Extend({
            align: 'top left',
            repeat: 'no-repeat',
            sizingMethod: 'crop',
            backgroundColor: ''
        },
        arguments[2] || {});
        Extend(element.style, arguments.callee.IEBelow7 ? {
            filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + url + '\'\', sizingMethod=\'' + options.sizingMethod + '\')'
        } : {
            background: options.backgroundColor + ' url(' + url + ') ' + options.align + ' ' + options.repeat
        });
    }
    setPngBackground.IEBelow7 = Pushup.Browser.IE && parseFloat(/MSIE ([\d.]+)/.exec(navigator.userAgent)[1]) < 7;
    var Cookie = {
        set: function (name, value) {
            var expires = '',
            options = arguments[2] || {};
            if (options.duration) {
                var date = new Date();
                date.setTime(date.getTime() + options.duration * 1000 * 60 * 60 * 24);
                value += '; expires=' + date.toGMTString();
            }
            document.cookie = name + "=" + value + expires + "; path=/";
        },
        remove: function (name) {
            this.set(name, '', -1)
        },
        get: function (name) {
            var cookies = document.cookie.split(';'),
            nameEQ = name + "=";
            for (var i = 0, l = cookies.length; i < l; i++) {
                var c = cookies[i];
                while (c.charAt(0) == ' ')
                c = c.substring(1, c.length);
                if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
            }
            return null;
        }
    };
    Pushup.cookiesEnabled = (function (test) {
        if (Cookie.get(test)) return true;
        Cookie.set(test, 'test', {
            duration: 15
        });
        return Cookie.get(test);
    })('_pushupCookiesEnabled');
    var Event = {
        add: function (obj, type, fn) {
            if (obj.attachEvent) {
                obj['e' + type + fn] = fn;
                obj[type + fn] = function () {
                    obj['e' + type + fn](window.event)
                };
                obj.attachEvent('on' + type, obj[type + fn]);
            }
            else obj.addEventListener(type, fn, false);
        },
        stop: function (event) {
            if (Pushup.Browser.IE) {
                event.cancelBubble = true;
                event.returnValue = false;
            }
            else {
                event.preventDefault();
                event.stopPropagation();
            }
        }
    };
    Event.add(window, 'load', function () {
        Pushup.start()
    });
})();