/** * Name: PiroBox Extended v.1.1 Beta * Date: Feb 2011 * Autor: Diego Valobra (http://www.pirolab.it),(http://www.diegovalobra.com) * Version: 1.1 * Licence: CC-BY-SA http://creativecommons.org/licenses/by-sa/3/it/ **/ (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', piro_info : 'More Informations' }, 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'+ ''+ ''+ ''+ ''+ ''+ ''+ ''+ ''+ ''+ ''+ ''+ ''+ ''+ ''+ ''+ ''+ '
'+ '
'+ '
'+ ''+ '
'+ '
'+ '
' ); $('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(); $('.caption').remove(); $('.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()-20, 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(); } //$('a[class*="pirobox_gall"]'); $(piro_gallery).each(function(){ var m = $(this).metadata(); var infoPath = ''; if ('undefined' != typeof(m.info)) { infoPath = m.info; } 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') || $(this).is('.single_fix')){ piro_next.add(piro_prev).hide(); } if($(this).is('.last') && $(this).is('.first') ){ 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'}); var info = ''; if (opt.piro_info !== false) { if (infoPath != '') { info = ' '; } } $('.caption').html('

'+descr + info +'

').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 =( ''+ ''+ ''+ ''+ ''+ ''+ ''+ ''+ ''); 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);