    document.documentElement.className += 'js_active';
    (function($) {
        $.fn.aviaSlider = function(g) {
            var h = {
                slides: 'li',
                animationSpeed: 900,
                autorotation: true,
                autorotationSpeed: 3,
                appendControlls: '',
                slideControlls: 'items',
                blockSize: {
                    height: 'full',
                    width: 'full'
                },
                betweenBlockDelay: 40,
                display: 'topleft',
                switchMovement: false,
                showText: true,
                transition: 'fade',
                backgroundOpacity: 0.5,
                transitionOrder: ['diagonaltop', 'diagonalbottom', 'topleft', 'bottomright', 'random']
            };
            var j = $.extend(h, g);
            return this.each(function() {
                var f = $(this),
                    slides = f.find(j.slides),
                    slideImages = slides.find('img'),
                    slideCount = slides.length,
                    slideWidth = slides.width(),
                    slideHeight = slides.height(),
                    blockNumber = 0,
                    currentSlideNumber = 0,
                    reverseSwitch = false,
                    currentTransition = 0,
                    current_class = 'active_item',
                    controlls = '',
                    skipSwitch = true,
                    interval = '',
                    blockSelection = '',
                    blockSelectionJQ = '',
                    blockOrder = [];
                if (j.blockSize.height == 'full') {
                    j.blockSize.height = slideHeight
                }
                if (j.blockSize.width == 'full') {
                    j.blockSize.width = slideWidth
                }
                f.methods = {
                    init: function() {
                        var a = 0,
                            posY = 0,
                            generateBlocks = true,
                            bgOffset = '';
                        slides.filter(':first').css({
                            'z-index': '5',
                            display: 'block'
                        });
                        while (generateBlocks) {
                            blockNumber++;
                            bgOffset = "-" + a + "px -" + posY + "px";
                            $('<div class="kBlock"></div>').appendTo(f).css({
                                zIndex: 20,
                                position: 'absolute',
                                display: 'none',
                                left: a,
                                top: posY,
                                height: j.blockSize.height,
                                width: j.blockSize.width,
                                backgroundPosition: bgOffset
                            });
                            a += j.blockSize.width;
                            if (a >= slideWidth) {
                                a = 0;
                                posY += j.blockSize.height
                            }
                            if (posY >= slideHeight) {
                                generateBlocks = false
                            }
                        }
                        blockSelection = f.find('.kBlock');
                        blockOrder['topleft'] = blockSelection;
                        blockOrder['bottomright'] = $(blockSelection.get().reverse());
                        blockOrder['diagonaltop'] = f.methods.kcubit(blockSelection);
                        blockOrder['diagonalbottom'] = f.methods.kcubit(blockOrder['bottomright']);
                        blockOrder['random'] = f.methods.fyrandomize(blockSelection);
                        slides.each(function() {
                            $.data(this, "data", {
                                img: $(this).find('img').attr('src')
                            })
                        });
                        if (slideCount <= 1) {
                            f.aviaSlider_preloadhelper({
                                delay: 200
                            })
                        } else {
                            f.aviaSlider_preloadhelper({
                                callback: f.methods.preloadingDone
                            });
                            f.methods.appendControlls().addDescription()
                        }
                    },
                    appendControlls: function() {
                        if (j.slideControlls == 'items') {
                            var b = j.appendControlls || f[0];
                            controlls = $('<div></div>').addClass('slidecontrolls').insertAfter(b);
                            slides.each(function(i) {
                                var a = $('<a href="#" class="ie6fix ' + current_class + '"></a>').appendTo(controlls);
                                a.bind('click', {
                                    currentSlideNumber: i
                                }, f.methods.switchSlide);
                                current_class = ""
                            });
                            controlls.width(controlls.width()).css('float', 'none')
                        }
                        return this
                    },
                    addDescription: function() {
                        if (j.showText) {
                            slides.each(function() {
                                var a = $(this),
                                    description = a.find('img').attr('alt'),
                                    titleURL = a.find('img').attr('title'),
                                    splitURL = titleURL.split('::'),
                                    splitdesc = description.split('::');
                                if (splitdesc[0] != "") {
                                    if (splitdesc[1] != undefined) {
                                        description = "<a href='"+ splitURL[0] +"'><strong>" + splitdesc[0] + "</strong></a><a href='"+ splitURL[1] +"'><h1>" + splitdesc[1] + "</h1></a><a href='"+ splitURL[2] +"'><h3>" + splitdesc[2] + "</h3></a>"
                                    } else {
                                        description = splitdesc[0]
                                    }
                                }
                                if (description != "") {
                                    $('<div></div>').addClass('feature_excerpt').html(description).css({
                                        display: 'block',
                                        'z-index': '6',
                                        'opacity': j.backgroundOpacity
                                    }).appendTo(a.find('span'))
                                }
                            })
                        }
                    },
                    preloadingDone: function() {
                        skipSwitch = false;
                        slides.css({
                            'backgroundColor': 'transparent',
                            'backgroundImage': 'none'
                        });
                        if (j.autorotation) {
                            f.methods.autorotate();
                            slideImages.bind("click", function() {
                                clearInterval(interval)
                            })
                        }
                    },
                    autorotate: function() {
                        interval = setInterval(function() {
                            currentSlideNumber++;
                            if (currentSlideNumber == slideCount) currentSlideNumber = 0;
                            f.methods.switchSlide()
                        }, (parseInt(j.autorotationSpeed) * 1000) + (j.betweenBlockDelay * blockNumber) + j.animationSpeed)
                    },
                    switchSlide: function(c) {
                        var d = false;
                        if (c != undefined && !skipSwitch) {
                            if (currentSlideNumber != c.data.currentSlideNumber) {
                                currentSlideNumber = c.data.currentSlideNumber
                            } else {
                                d = true
                            }
                        }
                        if (c != undefined) clearInterval(interval);
                        if (!skipSwitch && d == false) {
                            skipSwitch = true;
                            var e = slides.filter(':visible'),
                                nextSlide = slides.filter(':eq(' + currentSlideNumber + ')'),
                                nextURL = $.data(nextSlide[0], "data").img,
                                nextImageBG = 'url(' + nextURL + ')';
                            if (j.slideControlls) {
                                controlls.find('.active_item').removeClass('active_item');
                                controlls.find('a:eq(' + currentSlideNumber + ')').addClass('active_item')
                            }
                            blockSelectionJQ = blockOrder[j.display];
                            slides.find('>a>img').css({
                                opacity: 1,
                                visibility: 'visible'
                            });
                            if (j.switchMovement && (j.display == "topleft" || j.display == "diagonaltop")) {
                                if (reverseSwitch == false) {
                                    blockSelectionJQ = blockOrder[j.display];
                                    reverseSwitch = true
                                } else {
                                    if (j.display == "topleft") blockSelectionJQ = blockOrder['bottomright'];
                                    if (j.display == "diagonaltop") blockSelectionJQ = blockOrder['diagonalbottom'];
                                    reverseSwitch = false
                                }
                            }
                            if (j.display == 'random') {
                                blockSelectionJQ = f.methods.fyrandomize(blockSelection)
                            }
                            if (j.display == 'all') {
                                blockSelectionJQ = blockOrder[j.transitionOrder[currentTransition]];
                                currentTransition++;
                                if (currentTransition >= j.transitionOrder.length) currentTransition = 0
                            }
                            blockSelectionJQ.css({
                                backgroundImage: nextImageBG
                            }).each(function(i) {
                                var b = $(this);
                                setTimeout(function() {
                                    var a = new Array();
                                    if (j.transition == 'drop') {
                                        a['css'] = {
                                            height: 1,
                                            width: j.blockSize.width,
                                            display: 'block',
                                            opacity: 0
                                        };
                                        a['anim'] = {
                                            height: j.blockSize.height,
                                            width: j.blockSize.width,
                                            opacity: 1
                                        }
                                    } else if (j.transition == 'fade') {
                                        a['css'] = {
                                            display: 'block',
                                            opacity: 0
                                        };
                                        a['anim'] = {
                                            opacity: 1
                                        }
                                    } else {
                                        a['css'] = {
                                            height: 1,
                                            width: 1,
                                            display: 'block',
                                            opacity: 0
                                        };
                                        a['anim'] = {
                                            height: j.blockSize.height,
                                            width: j.blockSize.width,
                                            opacity: 1
                                        }
                                    }
                                    b.css(a['css']).animate(a['anim'], j.animationSpeed, function() {
                                        if (i + 1 == blockNumber) {
                                            f.methods.changeImage(e, nextSlide)
                                        }
                                    })
                                }, i * j.betweenBlockDelay)
                            })
                        }
                        return false
                    },
                    changeImage: function(a, b) {
                        a.css({
                            zIndex: 0,
                            display: 'none'
                        });
                        b.css({
                            zIndex: 3,
                            display: 'block'
                        });
                        blockSelectionJQ.fadeOut(j.animationSpeed * 1 / 3, function() {
                            skipSwitch = false
                        })
                    },
                    fyrandomize: function(a) {
                        var b = a.length,
                            objectSorted = $(a);
                        if (b == 0) return false;
                        while (--b) {
                            var c = Math.floor(Math.random() * (b + 1)),
                                temp1 = objectSorted[b],
                                temp2 = objectSorted[c];
                            objectSorted[b] = temp2;
                            objectSorted[c] = temp1
                        }
                        return objectSorted
                    },
                    kcubit: function(a) {
                        var b = a.length,
                            objectSorted = $(a),
                            currentIndex = 0,
                            rows = Math.ceil(slideHeight / j.blockSize.height),
                            columns = Math.ceil(slideWidth / j.blockSize.width),
                            oneColumn = blockNumber / columns,
                            oneRow = blockNumber / rows,
                            modX = 0,
                            modY = 0,
                            i = 0,
                            rowend = 0,
                            endreached = false,
                            onlyOne = false;
                        if (b == 0) return false;
                        for (i = 0; i < b; i++) {
                            objectSorted[i] = a[currentIndex];
                            if ((currentIndex % oneRow == 0 && blockNumber - i > oneRow) || (modY + 1) % oneColumn == 0) {
                                currentIndex -= (((oneRow - 1) * modY) - 1);
                                modY = 0;
                                modX++;
                                onlyOne = false;
                                if (rowend > 0) {
                                    modY = rowend;
                                    currentIndex += (oneRow - 1) * modY
                                }
                            } else {
                                currentIndex += oneRow - 1;
                                modY++
                            }
                            if ((modX % (oneRow - 1) == 0 && modX != 0 && rowend == 0) || (endreached == true && onlyOne == false)) {
                                modX = 0.1;
                                rowend++;
                                endreached = true;
                                onlyOne = true
                            }
                        }
                        return objectSorted
                    }
                };
                f.methods.init()
            })
        }
    })(jQuery);
    (function($) {
        $.fn.aviaSlider_preloadhelper = function(e) {
            var f = {
                fadeInSpeed: 800,
                delay: 0,
                callback: ''
            };
            var g = $.extend(f, e);
            return this.each(function() {
                var d = jQuery(this),
                    images = d.find('img').css({
                        opacity: 0,
                        visibility: 'hidden',
                        display: 'block'
                    }),
                    imagesToLoad = images.length,
                    img = [];
                d.operations = {
                    preload: function() {
                        var c = true;
                        images.each(function(i, a) {
                            var b = new Image(),
                                passImg = $(this);
                            b.src = this.src;
                            if (!b.complete) {
                                $(b).bind('error load', {
                                    currentImage: passImg
                                }, d.operations.showImage)
                            } else {
                                d.operations.showImage(passImg)
                            }
                        });
                        return this
                    },
                    showImage: function(c) {
                        imagesToLoad--;
                        if (c.data.currentImage != undefined) {
                            c = c.data.currentImage
                        }
                        if (g.delay <= 0) c.css('visibility', 'visible').animate({
                            opacity: 1
                        }, g.fadeInSpeed);
                        if (imagesToLoad == 0) {
                            if (g.delay > 0) {
                                images.each(function(i, a) {
                                    var b = $(this);
                                    setTimeout(function() {
                                        b.css('visibility', 'visible').animate({
                                            opacity: 1
                                        }, g.fadeInSpeed, function() {
                                            $(this).parent().removeClass('preloading')
                                        })
                                    }, g.delay * (i + 1))
                                });
                                if (g.callback != '') {
                                    setTimeout(g.callback, g.delay * images.length)
                                }
                            } else if (g.callback != '') {
                                (g.callback)()
                            }
                        }
                    }
                };
                d.operations.preload()
            })
        }
    })(jQuery);
