(function($) {
    $.fn.autohover = function() {
        this.each(function() {
            //tworzymy zmienne
            var $this = $(this), toHover, toHoverSingle, url, parts, ext, hoverUrl, imgObj, finalArray = [];

            //sprawdzamy, czy element jest obrazkiem
            if ($this.attr('tagName').toLowerCase() == 'img') {
                toHover = $this;
            } else {
                toHover = $this.find('img');
            }

            //wyszukujemy każdemu znalezionemu obrazkowi jego odpowiednika
            toHover.each(function() {
                toHoverSingle = $(this);

                //sprawdzamy, czy obrazek ma atrybut src
                url = toHoverSingle.attr('src');
                if (url == undefined) {
                    return false;
                }

                //generujemy adres odpowiednika
                parts = url.split('.');
                ext = parts.pop();
                parts[parts.length - 1] = parts[parts.length - 1] + '-hover';
                parts.push(ext);
                hoverUrl = parts.join('.');

                //i ładujemy go
                imgObj = document.createElement('img');
                imgObj.src = hoverUrl;

                //po czym wyniki zapisujemy do tablicy
                finalArray.push([toHoverSingle, url, hoverUrl]);
            });

            //w tym momencie przypisujemy event hover dla wszystkich elementów
            $this.hover(function() {
                for (var i = 0; i < finalArray.length; i++) {
                    finalArray[i][0].attr('src', finalArray[i][2]);
                }
            }, function() {
                for (var i = 0; i < finalArray.length; i++) {
                    finalArray[i][0].attr('src', finalArray[i][1]);
                }
            });

            return true;
        });

        return this;
    };
})(jQuery);

$(function() {
    if ($.browser.msie && $.browser.version < 8) {
        $('#content .pagination li').css({
            display: 'inline'
        });
    }

    $('#menu a.not-active, ul.technology.hoverable a, .pagination a, form.contact .submit button, #content .port-nav a').each(function() {
        var $this = $(this);
        var $thisParent = $this.parent(), $thisHover = $this.clone();

        $thisParent.css({
            position: 'relative',
            width: $this.outerWidth() + 1,
            height: $this.outerHeight()
        });
        
        $this.css({
            position: 'absolute',
            top: '0px',
            left: '0px',
            zIndex: 1
        }).mouseenter(function() {
            $thisHover.show().stop().animate({opacity: 1}, 500);
        });

        $thisHover.css({
            position: 'absolute',
            top: '0px',
            left: '0px',
            zIndex: 2,
            display: 'none',
            opacity: 0
        }).addClass('hover').appendTo($thisParent).mouseleave(function() {
            $thisHover.stop().animate({opacity: 0}, 500, function() {
                $thisHover.hide();
            });
        });

        $thisParent.mouseleave(function() {
            $thisHover.stop().animate({opacity: 0}, 500, function() {
                $thisHover.hide();
            });
        });
    });

    $('.smallworks img').each(function() {
        var $this = $(this);
        var $thisParent = $this.parent(), $thisHover = $this.clone();;

        $thisParent.css({
            position: 'relative',
            paddingTop: '215px'
        });

        $this.css({
            position: 'absolute',
            top: '0px',
            left: '0px'
        });

        var parts = $this.attr('src').split('.');
        var ext = parts.pop();
        parts[parts.length - 1] = parts[parts.length - 1] + '-hover';
        parts.push(ext);
        var hoverUrl = parts.join('.');

        $thisHover.attr('src', hoverUrl).css({
            position: 'absolute',
            top: '0px',
            left: '0px',
            zIndex: 2,
            display: 'none',
            opacity: 0
        }).appendTo($thisParent);

        $thisParent.hover(function() {
            $thisHover.show().stop().animate({opacity: 1}, 500);
        }, function() {
            $thisHover.stop().animate({opacity: 0}, 500, function() {
                $thisHover.hide();
            });
        });
    });

    $('.portfoliolist').each(function() {
        var $this = $(this);
        var $thisInfo = $this.find('.info');

        $thisInfo.css('opacity', 0);

        $this.hover(function() {
            $thisInfo.show().stop().animate({opacity: 1}, 500);
        }, function() {
            $thisInfo.stop().animate({opacity: 0}, 500, function() {
                $thisInfo.hide();
            });
        });
    });

    var contact_form = $('#contact_form');
    if (contact_form.length > 0) {
        $('#contact_topic').msDropDown();

        contact_form.submit(function() {
            contact_form.block({
                message: '<img src="img/preloader.gif" alt="Trwa wysyłanie&hellip; />"',
                css: {
                    background: 'none',
                    border: 'none',
                    width: '64px',
                    height: '64px',
                    top: '50%',
                    left: '50%'
                },
                overlayCSS: {
                    backgroundColor: '#DADBDD',
                    opacity: 0.6
                }
            });

            $.post(contact_form.attr('action'), contact_form.serialize(), function(data) {
                contact_form.unblock();
                if (data == 'ok') {
                    contact_form.block({
                        message: 'Twoja wiadomość została wysłana. Postaramy się skontaktować z Tobą tak szybko, jak to będzie możliwe.',
                        css: {
                            backgroundColor: '#b0d48a',
                            border: 'none',
                            padding: '10px',
                            color: '#3a4a28',
                            top: '50%',
                            left: '50%',
                            width: '200px',
                            lineHeight: '1.4em',
                            cursor: 'default'
                        },
                        overlayCSS: {
                            backgroundColor: '#DADBDD',
                            opacity: 0.6,
                            cursor: 'default'
                        }
                    });
                } else {
                    var unblockTimeout = null;

                    contact_form.block({
                        message: data,
                        css: {
                            backgroundColor: '#EC2A00',
                            border: 'none',
                            padding: '10px',
                            color: '#F4D8D2',
                            top: '50%',
                            left: '50%',
                            width: '200px',
                            lineHeight: '1.4em',
                            cursor: 'pointer'
                        },
                        overlayCSS: {
                            backgroundColor: '#DADBDD',
                            opacity: 0.6,
                            cursor: 'pointer'
                        },
                        timeout: 5000
                    });
                    
                    $('.blockUI').attr('title', 'Kliknij, aby spróbować ponowanie.').click(function() {
                        contact_form.unblock();
                    });
                }
            }, 'html');

            return false;
        });
    }

    $('.logos a').autohover();
});

$(window).load(function() {
    $('#slider').css('overflow', 'visible').nivoSlider({
        effect:'fold', //Specify sets like: 'fold,fade,sliceDown'
        slices:15,
        animSpeed:500, //Slide transition speed
        pauseTime:6000,
        startSlide:0, //Set starting Slide (0 index)
        directionNav:true, //Next & Prev
        directionNavHide:true, //Only show on hover
        controlNav:true, //1,2,3...
        keyboardNav:true, //Use left & right arrows
        pauseOnHover:true, //Stop animation while hovering
        manualAdvance:false, //Force manual transitions
        captionOpacity:0.8 //Universal caption opacity
    });

    $('#content .portfoliolist').css('overflow', 'visible');
    $('.manualslider').nivoSlider({
        effect:'fade', //Specify sets like: 'fold,fade,sliceDown'
        slices:15,
        animSpeed:500, //Slide transition speed
        pauseTime:6000,
        startSlide:0, //Set starting Slide (0 index)
        directionNav:true, //Next & Prev
        directionNavHide:true, //Only show on hover
        controlNav:false, //1,2,3...
        keyboardNav:true, //Use left & right arrows
        pauseOnHover:true, //Stop animation while hovering
        manualAdvance:true, //Force manual transitions
        captionOpacity:0.8, //Universal caption opacity
        afterLoad: function() {
            $('.portfoliolist a.nivo-prevNav, .portfoliolist a.nivo-nextNav').each(function() {
                var $this = $(this);
                var $thisInfo = $this.parents('.portfoliolist').find('.info').eq(0);

                $this.hover(function() {
                    $thisInfo.stop().animate({opacity: 0}, 500, function() {
                        $thisInfo.hide();
                    });
                }, function() {
                    $thisInfo.show().stop().animate({opacity: 1}, 500);
                });
            });
        }
    });
});

Cufon.replace('.port-header, .port-work-info h4', {
    fontFamily: 'MyriadPro',
    hover: {
        color: '#7f7f7f'
    }
});

Cufon.replace('#content h2', {
    fontFamily: 'MyriadPro',
    fontSize: '22px',
    textShadow: '#F7F7F7 1px 1px'
});

Cufon.replace('.sidebar h3, .about-persons h3, #error h3, #error h4', {
    fontFamily: 'MyriadPro'
});

Cufon.replace('#error .upsss', {
    fontFamily: 'MyriadPro',
    textShadow: '#F7F7F7 1px 1px'
});
