(function (jQuery) {
jQuery.fn.Zoomer = function (b) {
    var c = jQuery.extend({
        speedView: 1200,
        speedRemove: 1200,
        altAnim: false,
        speedTitle: 400,
        debug: false
    }, b);
    var d = jQuery.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 == true) {
            e('speedView: ' + d.speedView);
            e('speedRemove: ' + d.speedRemove);
            e('altAnim: ' + d.altAnim);
            e('speedTitle: ' + d.speedTitle)
        }


        if (Modernizr.touch){
            reflectfn = 'toggle';
        } else {
            reflectfn = 'hover';
        }
        
        jQuery(this)[reflectfn](function () {
            jQuery(this).css({
                'z-index': '10'
            });

            jQuery(this).delay(1000).queue(function(){

                // Image
                jQuery(this).find('img').addClass("hover").stop().animate({
                    marginTop: '-430px',
                    marginLeft: '-90px',
                    top: '50%',
                    left: '50%',
                    width: '550px',
                    height: '550px'
                }, d.speedView);
                // Label
                jQuery(this).find('.label_wrap').animate({
                    marginLeft: '-42px',
                    marginTop: '80px',
                    opacity: 'show'
                }, d.speedTitle).css({
                    'z-index': '10',
                    'position': 'absolute',
                    'float': 'left'
                });


                var linktarget = jQuery(this).children().find('.labelFurtherinfo a').attr('href');
                if(linktarget) {
                    jQuery(this).children().find('.labelFurtherinfo a').click(function() {
                       window.location.href=linktarget; 
                    });
                };

                jQuery(this).clearQueue();

            });
            
        }, function () {
            jQuery(this).clearQueue();
            jQuery(this).css({
                'z-index': '0'
            });
            jQuery(this).find('img').removeClass("hover").stop().animate({
                marginTop: '0',
                marginLeft: '0',
                top: '0',
                left: '0',
                width: '120px',
                height: '120px',
                padding: '0px'
            }, d.speedRemove);
            jQuery(this).find('.label_wrap').hide();
        });
        
    }
}
})(jQuery);
