document.documentElement.className += 'js_active';
(function ($) {
    $.fn.aviaSlider = function (g) {
        var h = {
            slides: 'li',
            animationSpeed: 1300,
            autorotation: true,
            autorotationSpeed: 3,
            appendControlls: '',
            slideControlls: 'items',
            blockSize: {
                height: 'full',
                width: 'full'
            },
            betweenBlockDelay: 60,
            display: 'topleft',
            switchMovement: false,
            showText: true,
            transition: 'fade',
            backgroundOpacity: 0.8,
            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'),
                            splitdesc = description.split('::');
                            if (splitdesc[0] != "") {
                                if (splitdesc[1] != undefined) {
                                    description = "<strong>" + splitdesc[0] + "</strong>" + splitdesc[1]
                                } else {
                                    description = splitdesc[0]
                                }
                            }
                            if (description != "") {
                                $('<div></div>').addClass('feature_excerpt').html(description).css({
                                    display: 'block',
                                    'opacity': j.backgroundOpacity
                                }).appendTo(a.find('a'))
                            }
                        })
                    }
                },
                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);
