/* * Author: Digital Zoom Studio * Website: http://digitalzoomstudio.net/ * Portfolio: http://codecanyon.net/user/ZoomIt/portfolio * Version: 2.01 */ (function($) { $.fn.prependOnce = function(arg, argfind) { var _t = $(this) // It's your element // console.info(argfind); if(typeof(argfind) =='undefined'){ var regex = new RegExp('class="(.*?)"'); var auxarr = regex.exec(arg); if(typeof auxarr[1] !='undefined'){ argfind = '.'+auxarr[1]; } } // we compromise chaining for returning the success if(_t.children(argfind).length<1){ _t.prepend(arg); return true; }else{ return false; } }; $.fn.appendOnce = function(arg, argfind) { var _t = $(this) // It's your element if(typeof(argfind) =='undefined'){ var regex = new RegExp('class="(.*?)"'); var auxarr = regex.exec(arg); if(typeof auxarr[1] !='undefined'){ argfind = '.'+auxarr[1]; } } // console.info(_t, _t.children(argfind).length, argfind); if(_t.children(argfind).length<1){ _t.append(arg); return true; }else{ return false; } }; $.fn.scrollergallery = function(o) { var defaults = { scrollerSettings : {} ,settings_fullwidthHack : 'off' ,layout : 'masonry' /// == only masonry / collage / simple available ,innerWidth : '0' ,type : 'scroller' // scroller or arrows or justmasonry ,design_bgpadding: '100' ,design_bgrotation: '10' ,design_parallaxeffect: 'off' ,design_itemwidth: '' ,design_itemheight: '' ,settings_lightboxlibrary: 'zoombox' //zoombox / prettyPhoto }; var o = $.extend(defaults, o); o.design_bgpadding = parseInt(o.design_bgpadding, 10); o.design_bgrotation = parseInt(o.design_bgrotation, 10); if(isNaN(parseInt(o.design_itemheight,10))==false){ o.design_itemheight = parseInt(o.design_itemheight,10); } if(isNaN(parseInt(o.design_itemwidth,10))==false){ o.design_itemheight = parseInt(o.design_itemheight,10); } this.each( function() { o.innerWidth = parseInt(o.innerWidth, 10); //console.log(this); var totalWidth=0 ,totalHeight=0 ,comWidth=0 ,comHeight=0 ,origOffsetX = 0 ,origWindowW = 0 ; var cthis = $(this) ,inner ,inners ,parorcon ,arrows_innerPoints = [] ,arrows_currPos = 0 ,arrows_currAPos = 0 ,_conItems ; //====variables for determining the availability of slides to perform transition var busy=false ,busyArray = [] ,started=false ; var nrLoaded = 0 ,nrChildren ; var arrowPadding = 50 ; var easing = "linear"; var i=0; var hasBg = false; var cssFromLeft = { 'left' : '-100%' ,'top' : 0 }; var cssFromRight = { 'left' : '100%' ,'top' : 0 }; var cssFromTop = { 'left' : '0' ,'top' : '-100%' }; var cssFromBottom = { 'left' : '0' ,'top' : '100%' }; var dir = 'fromLeft'; var mouseX = 0 ,mouseY = 0 ,lastMouseX=0 ,lastMouseY=0 ,tiltIndexX ,tiltIndexY ; var int_move_parallax = 0; //console.info(o); init(); function init(){ inner = cthis.find('.inner').eq(0); if(o.innerWidth!=0){ inner.css('width', o.innerWidth); } nrChildren = inner.children().length; if(cthis.children('.clip-bg').length>0){ hasBg = true; } inner.children().each(function(){ var _t = $(this); var toload; if(_t.hasClass('sgitem-tobe')){ _t.removeClass('sgitem-tobe'); var aux = ''; var str_w = ''; var str_h = ''; var imgtobg = false; if(!isNaN(parseInt(o.design_itemwidth,10))){ str_w = ' width: '+o.design_itemwidth+'px;'; } if(!isNaN(parseInt(o.design_itemheight,10))){ str_h = ' height: '+o.design_itemheight+'px;'; } //console.log(isNaN('ceva')); //console.log(cthis, str_w, o.design_itemwidth); var auxlab = 'data-itemwidth'; if(_t.attr(auxlab) && _t.attr(auxlab)!=''){ if(_t.attr(auxlab).indexOf('%')>-1){ str_w = ' width: '+_t.attr(auxlab)+';'; }else{ str_w = ' width: '+_t.attr(auxlab)+'px;'; } } var auxlab = 'data-itemheight'; if(_t.attr(auxlab) && _t.attr(auxlab)!=''){ if(_t.attr(auxlab).indexOf('%')>-1){ str_h = ' height: '+_t.attr(auxlab)+';'; }else{ str_h = ' height: '+_t.attr(auxlab)+'px;'; } } //console.log(str_w); if(str_w!=''){ imgtobg = true; } //console.info(o.type, str_w,str_h); if(o.type=="justmasonry"){ if(str_w=='' || str_h==''){ imgtobg=false; str_h=''; str_w=''; } } var str_img = ''; if(imgtobg){ str_img = '
' } if(typeof _t.attr('data-type')=='undefined'){ _t.attr('data-type','image'); } if(_t.attr('data-type')=='image'){ aux = ''; if(_t.attr('data-link')!='' && _t.attr('data-link')!=undefined){ aux += ''; } aux += str_img; if(_t.attr('data-link')!='' && _t.attr('data-link')!=undefined){ aux += ''; } _t.prepend(aux); if(_t.attr('data-link_wholecontainer')=='on' && _t.attr('data-link')!='' && _t.attr('data-link')!=undefined){ _t.wrapInner(''); } } if(_t.attr('data-type')=='imageandlightbox'){ //console.log(o.settings_lightboxlibrary) if(_t.find('.desc').length==0){ if(o.settings_lightboxlibrary=='prettyPhoto'){ aux = '= nrChildren){ handleReady(); } } //function which starts the script function handleReady(){ if(started==true){ return; } started=true; if(o.layout=='masonry'){ inner.masonry({ columnWidth: 1 }); } if(o.layout=='collage'){ inner.collagePlus({ 'targetHeight' : 100 }); } comWidth = inner.width(); cthis.bind('mousemove', handle_mousemove); if(o.type=="scroller"){ init_scroller(); } if(o.type=="arrows"){ init_arrows(); } if(o.type=="justmasonry"){ init_justmasonry(); } if(o.settings_lightboxlibrary=='zoombox'){ $('.zoombox').zoomBox(); } if(o.settings_lightboxlibrary=='prettyPhoto' && jQuery.fn.prettyPhoto){ cthis.find("a[rel^='prettyPhoto']").prettyPhoto(); } } function handle_mousemove(e){ mouseX = e.pageX - cthis.offset().left; mouseY = e.pageY - cthis.offset().top; // console.info(mouseX,mouseY); if(o.design_parallaxeffect=='on'){ tiltIndexX = 0; tiltIndexY = 0; if(hasBg){ tiltIndexX = mouseX / totalWidth - 0.5; tiltIndexY = mouseY / totalHeight - 0.5; } clearTimeout(int_move_parallax); int_move_parallax = setTimeout(move_parallax, 10); } //console.info(((tiltIndexX * 6)-3), tiltIndexY, ((tiltIndexY * 6)-3)); } function move_parallax(){ cthis.find('.the-bg').eq(0).css({ //'transform' : 'rotateX('+(tiltIndexX * o.design_bgrotation)+'deg) rotateY('+(tiltIndexY * o.design_bgrotation)+'deg)', //'left' : ((tiltIndexX * 6)-3) + '%' //,'top' : ((tiltIndexY * 6)-3) + '%' 'transform' : 'translate3d('+((tiltIndexX * 6)-3)+'%,'+((tiltIndexY * 6)-3) + '%,0)' }) var auxs = 12; _conItems.css({ //'transform' : 'rotateX('+(tiltIndexX * o.design_bgrotation)+'deg) rotateY('+(tiltIndexY * o.design_bgrotation)+'deg)', //'left' : ((tiltIndexX * 6)-3) + '%' //,'top' : ((tiltIndexY * 6)-3) + '%' 'transform' : 'translate3d('+((tiltIndexX * auxs)-(auxs/2))+'px,'+((tiltIndexY * auxs)-(auxs/2)) + 'px,0)' }) } function init_scroller(){ inner = cthis.find('.inner').eq(0); cthis.scroller(o.scrollerSettings); _conItems = cthis.find('.scroller').eq(0); _conItems.addClass('con-items'); stylizeGallery(); } function init_justmasonry(){ cthis.addClass('type-'+ o.type); stylizeGallery(); } function init_arrows(){ cthis.addClass('type-arrows'); inner = cthis.find('.inner').eq(0); inner.wrap('
'); inners = cthis.find('.inners').eq(0); _conItems = cthis.find('.con-items').eq(0); var auxa = []; var aux = 0; inner.children().each(function(){ var _t = $(this); //console.log(_t.css('top')); if(parseInt(_t.css('top'), 10)==0){ auxa.push(parseInt(_t.css('left'), 10)); } }) for(i=auxa.length-1;i>0;i--){ aux = -auxa[i]; arrows_innerPoints.push(aux); } arrows_innerPoints.push(0) var i2=auxa.length-1; for(i=1;i
'); cthis.append('
'); //the default padding for the arrows arrows_currPos = arrowPadding; inners.css('left', arrows_currPos); //if its fullwidth we add the listener and trigger an initial load if(o.settings_fullwidthHack=='on'){ origOffsetX = cthis.offset().left; origWindowW = jQuery(window).width(); //cthis.css('left', -cthis.offset().left); } cthis.find('.arrowright-con').bind('click', handleArrowRightClick); cthis.find('.arrowleft-con').bind('click', handleArrowLeftClick); stylizeGallery(); } function handleArrowLeftClick(){ //console.log(arg); var tempNr = arrows_currAPos; tempNr++; if(tempNr>=arrows_innerPoints.length){ arrows_reblock(); }else{ arrows_gotoPosition(tempNr); } } function handleArrowRightClick(){ //console.log(arg); var tempNr = arrows_currAPos; tempNr--; if(tempNr<0){ arrows_reblock(); }else{ arrows_gotoPosition(tempNr); } } function arrows_reblock(){ if(busy==true){ return; } //console.log(inners); if(arrows_currAPos==0){ arrows_currPos+=comWidth; inners.css('left', arrows_currPos); } //console.log(arrows_currAPos, arrows_innerPoints.length); if(arrows_currAPos>=arrows_innerPoints.length-1){ arrows_currPos-= comWidth; inners.css('left', arrows_currPos); //console.log(arrows_currPos) } arrows_gotoPosition(parseInt(arrows_innerPoints.length/2,10)); } function calculateDims(){ if(o.design_parallaxeffect=='on'){ if(o.type=="arrows"){ _conItems.css({ 'left': o.design_bgpadding, 'width': totalWidth - (o.design_bgpadding*2), 'height': totalHeight - (o.design_bgpadding*2), 'overflow': 'hidden' }) if(hasBg){ inners.css({ 'left' : 0 }) arrowPadding = 0; } } } } function arrows_gotoPosition(arg){ if(busy==true){ return; } busy=true; arrows_currAPos = arg; inners.animate({ 'left' : arrows_innerPoints[arg] + arrowPadding }, {queue:false, complete:unbusy}) arrows_currPos = arrows_innerPoints[arg] + arrowPadding; arrows_currAPos = arg; } function unbusy(){ busy = false; } function mouseover_item(e){ var _t = $(this); var ind = (_t.parent().children().index(_t)); /*if you want direction scrolling uncomment this*/ //if(e.pageX > $(this).offset().left + $(this).width()/2) //dir="right"; if(ind==0){ //console.info(e, _t); } //console.log(busyArray[ind]); if(busyArray[ind]==true){ return; } var localx = e.pageX - _t.offset().left; var localy = e.pageY - _t.offset().top; var dir = closestEdge(localx, localy, _t.width(), _t.height()); //console.info(_t, edge); //console.log(e.pageX, (_t.offset().left + _t.outerWidth(false))); if(dir=="left"){ $(this).find('.desc').css(cssFromLeft); } if(dir=="right"){ $(this).find('.desc').css(cssFromRight); } if(dir=="top"){ $(this).find('.desc').css(cssFromTop); } if(dir=="bottom"){ $(this).find('.desc').css(cssFromBottom); } //console.info($(this)); $(this).find('.desc').eq(0).stop().animate({ 'left' : 0, 'top' : 0 }, {duration:300, queue:true, complete:animComplete, easing:easing}); busyArray[ind]=true; } function mouseout_item(e){ var _t = $(this); var ind = (_t.parent().children().index(_t)); //if(e.pageX > $(this).offset().left + $(this).width()/2) //dir="right"; var localx = e.pageX - _t.offset().left; var localy = e.pageY - _t.offset().top; var dir = closestEdge(localx, localy, _t.width(), _t.height()); //console.info(_t, edge); var cssToAnimate = cssFromLeft; if(dir=="left"){ cssToAnimate = cssFromLeft; } if(dir=="right"){ cssToAnimate = cssFromRight; } if(dir=="top"){ cssToAnimate = cssFromTop; } if(dir=="bottom"){ cssToAnimate = cssFromBottom; } $(this).find('.desc').eq(0).animate(cssToAnimate, {duration:300, queue:true, complete:animOutComplete, easing:easing}); busyArray[ind]=true; } function animComplete(){ var ind = 0; var _con = null; var _conInner = null; if($(this).parent().hasClass('sgitem')){ _con = $(this).parent(); }else{ _con = $(this).parent().parent(); } if($(this).parent().parent().hasClass('inner')){ _conInner = $(this).parent().parent(); }else{ _conInner = $(this).parent().parent().parent(); } ind = (_conInner.children().index(_con)); busyArray[ind]=false; } function animOutComplete(){ var _t = $(this); var ind = 0; var _con = null; var _conInner = null; if($(this).parent().hasClass('sgitem')){ _con = $(this).parent(); }else{ _con = $(this).parent().parent(); } if($(this).parent().parent().hasClass('inner')){ _conInner = $(this).parent().parent(); }else{ _conInner = $(this).parent().parent().parent(); } ind = (_conInner.children().index(_con)); //console.log(_t); //console.log('ceva'); busyArray[ind]=false; // _t.stop(); } function distMetric(x,y,x2,y2) { var xDiff = x - x2; var yDiff = y - y2; return (xDiff * xDiff) + (yDiff * yDiff); } function closestEdge(x,y,w,h) { var topEdgeDist = distMetric(x,y,w/2,0); var bottomEdgeDist = distMetric(x,y,w/2,h); var leftEdgeDist = distMetric(x,y,0,h/2); var rightEdgeDist = distMetric(x,y,w,h/2); var min = Math.min(topEdgeDist,bottomEdgeDist,leftEdgeDist,rightEdgeDist); switch (min) { case leftEdgeDist: return "left"; case rightEdgeDist: return "right"; case topEdgeDist: return "top"; case bottomEdgeDist: return "bottom"; } } function stylizeGallery(){ if(cthis.parent().hasClass('scroller-gallery-con')){ parorcon = cthis.parent(); parorcon.children('.preloader').fadeOut("slow"); } totalWidth = cthis.width(); totalHeight = cthis.height(); if(cthis.css('opacity') == 0){ cthis.animate({ 'opacity' : 1 }, 600) } if(hasBg){ _conItems.css({ 'top': o.design_bgpadding }) } if(cthis.find('.real-inner').length==1){ inner = cthis.find('.real-inner'); } //we add classes for the icons to show for(i=0;i'); //console.info(_t); var auxwrap = ''; if(_t.attr('data-type')=='image' && _t.attr('data-link')!=undefined && _t.attr('data-link')!=''){ auxwrap += '
'; auxwrap += ''; } if(_t.attr('data-type')=='imageandlightbox'){ if(o.settings_lightboxlibrary=='prettyPhoto'){ auxwrap = '