(function($) {
    $.fn.Zoomer = function(b) {
        var c = $.extend({speedView:200,speedRemove:400,altAnim:false,speedTitle:400,debug:false}, b);
        var d = $.extend(c, b);

        function e(s) {
            if (typeof console != "undefined" && typeof console.debug != "undefined") {
                console.log(s)
            } else {
                alert(s)
            }
        }

        if (d.speedView == undefined || d.speedRemove == undefined || d.altAnim == undefined || d.speedTitle == undefined) {
            e('speedView: ' + d.speedView);
            e('speedRemove: ' + d.speedRemove);
            e('altAnim: ' + d.altAnim);
            e('speedTitle: ' + d.speedTitle);
            return false
        }
        if (d.debug == undefined) {
            e('speedView: ' + d.speedView);
            e('speedRemove: ' + d.speedRemove);
            e('altAnim: ' + d.altAnim);
            e('speedTitle: ' + d.speedTitle);
            return false
        }
        if (typeof d.speedView != "undefined" || typeof d.speedRemove != "undefined" || typeof d.altAnim != "undefined" || typeof d.speedTitle != "undefined") {
            if (d.debug) {
                e('speedView: ' + d.speedView);
                e('speedRemove: ' + d.speedRemove);
                e('altAnim: ' + d.altAnim);
                e('speedTitle: ' + d.speedTitle)
            }


//          Preloader for big images
            var img = $(this).find('img');
            for ( var i=0; i < $(this).length; i++ ) {
                document.createElement('img').setAttribute('src', img.eq(i).attr('alt'));
            }

            $(this).hover(function() {
			
                var big_img = $(this).find('img').attr('big_img');			
                var img = $(this).find('img');
                var div = $(this).find('div');

                img.attr('src', big_img);

                $(this).css({'z-index':'10'});
                $(this).next().css({'z-index':'2'});

                if ($(this).hasClass('first')) { //animation for first element
                    timeoutID = window.setTimeout(function() {
                        div.css('left', '0').fadeIn(400);
                    }, 300);
                    img.addClass("hover").stop().animate({marginTop:'-150px',marginLeft:'-98px',top:'50%',left:'50%',width:'314px',height:'258px'}, d.speedView);
                } else if ($(this).hasClass('last')) { //animation for last element
                    timeoutID = window.setTimeout(function() {
                        div.css('left', '-117px').fadeIn(400);
                    }, 300);
                    img.addClass("hover").stop().animate({marginTop:'-150px',marginLeft:'-210px',top:'50%',left:'50%',width:'314px',height:'258px'}, d.speedView);
                } else { //animation for all elements
                    timeoutID = window.setTimeout(function() {
                        div.css('left', '-81px').fadeIn(400);
                    }, 300);
                    img.addClass("hover").stop().animate({marginTop:'-150px',marginLeft:'-180px',top:'50%',left:'50%',width:'314px',height:'258px'}, d.speedView);
                }
            }, function() {
                var small_img = $(this).find('img').attr('small_img');				
                var img = $(this).find('img');

                $(this).css({'z-index':'2'});
                $(this).next().css({'z-index':'1'});

                $(this).find('div').css({'display': 'none'});

                window.clearTimeout(timeoutID);
                img.attr('src', small_img);

                img.removeClass("hover").stop().animate({marginTop:'0',marginLeft:'0',top:'0',left:'0',width:'185px',height:'153px',padding:'0'}, d.speedRemove);
            });


        }
    }
})(jQuery);
