User:Suppa chuppa/image.js

/* * Not written by me. */ (function($) {   $.piroBox_ext = function(opt) {        opt = jQuery.extend({ piro_speed : 700, bg_alpha : 0.9, piro_scroll : true, piro_drag : null, piro_nav_pos : 'top' }, opt);   $.fn.piroFadeIn = function(speed, callback) {        $(this).fadeIn(speed, function { if(jQuery.browser.msie) $(this).get(0).style.removeAttribute('filter'); if(callback != undefined) callback; });   };    $.fn.piroFadeOut = function(speed, callback) {        $(this).fadeOut(speed, function { if(jQuery.browser.msie) $(this).get(0).style.removeAttribute('filter'); if(callback != undefined) callback; });   };    var my_gall_obj = $('a[class*="pirobox"]');    var map = new Object;        for (var i=0; i<my_gall_obj.length; i++) {            var it=$(my_gall_obj[i]);            map['a.'+ it.attr('class').match(/^pirobox_gall\w*/)]=0;        }    var gall_settings = new Array;    for (var key in map) {        gall_settings.push(key);    }    for (var i=0; i '+ ' '       );    $('body').append(struct);    var wrapper = $('.piro_html');    piro_bg = $('.piro_overlay'),    piro_nav = $('.nav_container'),    piro_next = $('.piro_next'),    piro_prev = $('.piro_prev'),    piro_next_fake = $('.piro_next_fake'),    piro_prev_fake = $('.piro_prev_fake'),    piro_close = $('.piro_close'),    div_reg = $('.div_reg'),    piro_loader = $('.piro_loader'),    resize = $('.resize'),    y = $(window).height,    x = $(window).width;    piro_nav.hide.css(opt.piro_nav_pos ,'-38px');    if(opt.piro_nav_pos == 'top'){        var position = +5;    }else if(opt.piro_nav_pos == 'bottom'){        var position = -30;    }    wrapper.css({left:  ((x/2)-(250))+ 'px',top: parseInt($(document).scrollTop)+(100)});    $(wrapper).add(piro_bg).hide;    piro_bg.css({'opacity':opt.bg_alpha});      $(piro_prev).add(piro_next).bind('click',function(c) { piro_nav.hide; $('.zoomIn').add('.zoomOut').remove; c.preventDefault; piro_next.add(piro_prev).hide; var obj_count = parseInt($('a[class*="pirobox_gall"]').filter('.item').attr('rev')); var start = $(this).is('.piro_prev') ? $('a[class*="pirobox_gall"]').eq(obj_count - 1) : $('a[class*="pirobox_gall"]').eq(obj_count + 1); start.click; });   $('html').bind('keyup', function (c) { if(c.keyCode == 27) { c.preventDefault; if($(piro_close).is(':visible')){close_all;} }   });    $('html').bind('keyup' ,function(e) { if ($('.item').is('.first')){ }else if ($('.item').attr('rel') == 'single'){ piro_nav.show; }else if(e.keyCode == 37){ e.preventDefault; if($(piro_close).is(':visible')){piro_prev.click;} }   });    $('html').bind('keyup' ,function(z) { if ($('.item').is('.last')){ }else if ($('.item').attr('rel') == 'single'){ piro_nav.show; }else if(z.keyCode == 39){ z.preventDefault; if($(piro_close).is(':visible')){piro_next.click;} }   });    $(window).resize(function{ var new_y = $(window).height, new_x = $(window).width, new_h = wrapper.height, new_w = wrapper.width; wrapper.css({           left:  ((new_x/2)-(new_w/2))+ 'px',            top: parseInt($(document).scrollTop)+(new_y-new_h)/2+position            }); });    function scrollIt {        $(window).scroll(function{ var new_y = $(window).height, new_x = $(window).width, new_h = wrapper.height, new_w = wrapper.width; wrapper.css({               left:  ((new_x/2)-(new_w/2))+ 'px',                top: parseInt($(document).scrollTop)+(new_y-new_h)/2+position            }); });   }    if(opt.piro_scroll == true){        scrollIt;      }    $(piro_gallery).each(function{ var descr = $(this).attr('title'), params = $(this).attr('rel').split('-'), p_link = $(this).attr('href'); $(this).unbind; $(this).bind('click', function(e) {           piro_bg.css({'opacity':opt.bg_alpha});              e.preventDefault;            piro_next.add(piro_prev).hide.css('visibility','hidden');            $(piro_gallery).filter('.item').removeClass('item');            $(this).addClass('item');            open_all;            if($(this).is('.first')){                piro_prev.hide;                piro_next.show;                piro_prev_fake.show.css({'visibility':'hidden'});            }else{                piro_next.add(piro_prev).show;                piro_next_fake.add(piro_prev_fake).hide;                }            if($(this).is('.last')){                piro_prev.show;                piro_next_fake.show.css({'visibility':'hidden'});                piro_next.hide;               }            if($(this).is('.pirobox')){                piro_next.add(piro_prev).hide; }       });        function open_all{            wrapper.add(piro_bg).add(div_reg).add(piro_loader).show;            function animate_html{                $('.caption').remove;                if(params[1] == 'full' && params[2] == 'full'){                params[2] = $(window).height-70;                  params[1] = $(window).width-55;                }                var y = $(window).height;                var x = $(window).width;                piro_close.hide;                div_reg.add(resize).animate({ 'height':+ (params[2]) +'px', 'width':+ (params [1])+'px' },opt.piro_speed).css('visibility','visible');               wrapper.animate({ height:+ (params[2])+20 +'px', width:+ (params[1]) +20+'px', left: ((x/2)-((params[1])/2+10))+ 'px', top: parseInt($(document).scrollTop)+(y-params[2])/2+ position },opt.piro_speed ,function{ piro_next.add(piro_prev).add(piro_prev_fake).add(piro_next_fake).css('visibility','visible'); piro_nav.show; piro_close.show; });           }            function animate_image {                piro_nav.add('.caption').hide;                    if(descr == ""){                        $('.caption').remove;                    }else{                        $(piro_capt_cont).appendTo(resize);                    }                        var img = new Image;                        img.onerror = function {                            $('.caption').remove;                            img.src = "http://www.pirolab.it/pirobox/js/error.jpg";                        };                        img.onload = function {                            var this_h = img.height;                            var this_w = img.width;                            var y = $(window).height;                            var x = $(window).width;                            var imgH = img.height;                            var imgW = img.width; if(imgH+20 > y || imgW+20 > x){ var _x = (imgW + 20)/x; var _y = (imgH + 20)/y; if ( _y > _x ){ imgW = Math.round(img.width* (rz_img/_y)); imgH = Math.round(img.height* (rz_img/_y)); }else{ imgW = Math.round(img.width * (rz_img/_x)); imgH = Math.round(img.height * (rz_img/_x)); }                               $('.zoomIn').add('.zoomOut').remove; $('.h_c_c').append('zoomIn'); $('.zoomIn,.zoomOut').hide; }else{ imgH = img.height; imgW = img.width; $('.zoomIn').add('.zoomOut').remove; }                           var y = $(window).height; var x = $(window).width; $(img).height(imgH).width(imgW).hide; $('.div_reg img').remove; $('.div_reg').html(''); div_reg.append(img).show; $(img).addClass('immagine'); if(opt.piro_drag == true){ $('.immagine,.h_b_c,.h_t_c').css('cursor','move'); if ( $.browser.msie ) { wrapper.draggable({ handle:'.h_t_c,.h_b_c,.div_reg img'}); }else{ wrapper.draggable({ handle:'.h_t_c,.h_b_c,.div_reg img',opacity: 0.80}); }                           }                            div_reg.add(resize).animate({height:imgH+'px',width:imgW+'px'},opt.piro_speed); wrapper.animate({                               height : (imgH+20) + 'px',                                width : (imgW+20) + 'px' ,                                 left:  ((x/2)-((imgW+20)/2)) + 'px',                                top: parseInt($(document).scrollTop)+(y-imgH)/2 + position                                },opt.piro_speed, function{                                    piro_loader.hide;                                         var cap_w = resize.width;                                    $('.caption').css({width:cap_w+'px'});                                    $('.caption').html(' '+descr+' ').hide;                                          $(img).fadeIn(300,function{ if(img.src == "http://www.pirolab.it/pirobox/js/error.jpg" ){ }                                   $(window).scroll(function{                                        if($('.zoomOut').is(':visible')){                                        //alert('visibile');                                            $(img).animate({'width':  imgW, 'height': imgH, top:0, left:0 },600,function{ $('.immagine').css('cursor', 'auto'); $(img).draggable({disabled:true}); $('.zoomIn').add('.zoomOut').remove; $('.h_c_c').append('zoomIn'); $('.zoomIn').show; });                                                                            }                                        });                                        });                                    $('.zoomOut').live('click',function(h){ h.preventDefault; $('.immagine').css('cursor', 'auto'); if(opt.piro_drag == true){ wrapper.draggable({disabled:false}); }                                           $(img).draggable({disabled:true}); $('.zoomIn').add('.zoomOut').remove; $('.h_c_c').append('zoomIn'); $('.zoomIn').show; $(img).animate({'width': imgW, 'height': imgH, top:0, left:0 },600) });                                   $('.zoomIn').live('click',function(w){ w.preventDefault; $('.zoomIn').add('.zoomOut').remove; $('.h_c_c').append('zoomOut'); $('.zoomOut').show; if(opt.piro_drag == true){ wrapper.draggable({disabled:true}); }                                       $(img).draggable({disabled:false}); $(img).animate({'width': this_w, 'height': this_h , top:-(this_h-imgH)/2, left:-(this_w-imgW)/2 },600,function{                                        var imgPos     = div_reg.offset;                                        var x1 = (imgPos.left + imgW) - this_w;                                        var y1 = (imgPos.top + imgH) - this_h;                                        var x2 = imgPos.left;                                        var y2 = imgPos.top;                                      $(img).draggable({containment: [x1,y1,x2,y2],scrollSpeed: 400});                                      $('.immagine').css('cursor', 'move');                                      }); });                                   $('.zoomIn').show;                                    piro_close.show;                                    $('.caption').slideDown(200);                                    piro_next.add(piro_prev).add(piro_prev_fake).add(piro_next_fake).css('visibility','visible');                                    piro_nav.show;                                    resize.resize(function{ NimgW = img.width;//1.50; NimgH = img.heigh;//1.50; $('.caption').css({width:(NimgW)+'px'}); });                                });                             });                         };                        img.src = p_link;                        piro_loader.click(function{ img.src = 'about:blank'; });               }            switch (params[0]) {                case 'iframe':                $('.zoomIn').add('.zoomOut').remove;                    div_reg.html('').css('overflow','hidden');                    resize.css('overflow','hidden');                    piro_close.hide;                    animate_html;                    div_reg.piroFadeIn(300,function{ div_reg.append(                       ' '                        ); $('.my_frame').css({'height':+ (params[2]) +'px','width':+ (params [1])+'px'}); piro_loader.hide; });               break;                case 'content':                $('.zoomIn').add('.zoomOut').remove;                    div_reg.html('').css('overflow','auto');                    resize.css('overflow','auto');                    $('.my_frame').remove;                    piro_close.hide;                    animate_html;                    div_reg.piroFadeIn(300,function{ div_reg.load(p_link); //alert(p_link); piro_loader.hide; });               break;                case 'inline':                $('.zoomIn').add('.zoomOut').remove;                    div_reg.html('').css('overflow','auto');                    resize.css('overflow','auto');                    $('.my_frame').remove;                    piro_close.hide;                    animate_html;                    div_reg.piroFadeIn(300,function{ $(p_link).clone(true).appendTo(div_reg).piroFadeIn(300); piro_loader.hide; });               break;                case 'flash':                $('.zoomIn').add('.zoomOut').remove;                $('.my_frame').remove;                div_reg.html('').css('overflow','hidden');                animate_html;                    var flash_cont =( ''+ ''+ ''+ ''+ ''+ ''+ '<embed src="'+ p_link +'"  wmode="transparent"  width="'+params[1]+'" height="'+params[2]+'">'+ ' '+                   ' ');                    div_reg.piroFadeIn(300,function{ $(flash_cont).appendTo(div_reg); piro_loader.hide; });               break;                case 'gallery':                    div_reg.css('overflow','hidden');                    resize.css('overflow','hidden');                    $('.my_frame').remove;                    animate_image;                break;                case 'single':                    $('.my_frame').remove;                    div_reg.html('').css('overflow','hidden');                    resize.css('overflow','hidden');                    animate_image;                break;            }           }    }); $('.immagine').live('click',function{       $('.caption').slideToggle(200);    }); function close_all { if($('.piro_close').is(':visible')){ $('.zoomIn').add('.zoomOut').add('.my_frame').add('.caption').remove; wrapper.add(div_reg).add(resize).stop; if(opt.piro_drag == true){ wrapper.draggable({disabled:false}); }               var ie_sucks = wrapper; if ( $.browser.msie ) { ie_sucks = div_reg.add(piro_bg); $('.div_reg img').remove; }else{ ie_sucks = wrapper.add(piro_bg); }               ie_sucks.piroFadeOut(200,function{                    div_reg.html('');                    piro_loader.hide;                    piro_nav.hide;                    piro_bg.add(wrapper).hide.css('visibility','visible');                }); }       }        piro_close.add(piro_loader).add(piro_bg).bind('click',function(y){y.preventDefault; close_all; }); } })(jQuery);