$(document).ready(function(){ if($('.controlBorder').length == 0){ createGallery('.imgGallery'); createGallery('.imgGalleryNoThumbs', { thumbs : false, bigimg : true, lightbox : false, autoplay : false, autoplayEnabled : false, animationSpeed : 500 }) } }); function createGallery(el, settingsObject){ if($(el).length < 1){ return; } else { el = $(el); } el.each(function(){ var element = $(this), settings = settingsObject || { thumbs : true, bigimg : true, lightbox : true, autoplay : false, autoplayEnabled : true, animationSpeed : 500 }; var interval, index = 0, imgContainer = $(''), //$('
').addClass('imgContainer'), largeImgContainer = $(''), //$('
').addClass('largeImgContainer'), thumbsContainer = $(''); //$('
').addClass('imgThumbs'); var lightboxContainer = largeImgContainer.wrap('
').parent().parent().parent(), animationDelay = settings.animationSpeed, autoPlay = false, autoPlayIndicator = $(''), timer, buildGallery = function(xml, category){ element.empty(); var cat = category ? 'category[name="' + category + '"]' : 'category'; //var cat = 'category'; xml = $(xml); xml.find(cat).children().each(function(){ if(settings.bigimg){ $('
  • ') .bind('click', function(){ doLightBox($(this).index()); }) .append('') .children('img') .css({ 'position' : 'absolute', 'top' : 0, 'left' : 0, 'min-width' : '100%', 'min-height': '100%' }) .parent() .appendTo(imgContainer); } if(settings.lightbox){ $('
  • ') .append('') .children('img') .css({ 'position' : 'absolute', 'top' : 0, 'left' : 0, 'min-width' : '100%', 'min-height': '100%' }) .parent() .appendTo(largeImgContainer); } if(settings.thumbs){ $('
  • ') .data('index', index) .bind('click', function(){ $(this) .addClass('active') .siblings() .removeClass('active'); if(settings.lightbox || settings.bigimg){ goToSlide($(this).data('index')); } if(settings.lightbox && !settings.bigimg){ doLightBox(); } }) .append('') .children('img') .css({ 'position' : 'absolute', 'top' : 0, 'left' : 0, 'min-width' : '100%', 'min-height': '100%' }) .parent() .appendTo(thumbsContainer); } index++; }); if(settings.bigimg){ imgContainer .wrap('
    ') .parent() .appendTo(element); } if(settings.thumbs){ thumbsContainer .wrap('
    ') .parent() .appendTo(element); thumbsContainer.find('li:first').addClass('active'); } if(settings.lightbox){ lightboxContainer .hide() .appendTo('body'); } }, goToSlide = function(index){ if(settings.bigimg){ imgContainer .children() .eq(index) .fadeIn(animationDelay) .siblings() .fadeOut(animationDelay); } if(settings.lightbox){ if(largeImgContainer.is(':visible')){ largeImgContainer .children() .eq(index) .fadeIn(animationDelay) .siblings() .fadeOut(animationDelay); }else { largeImgContainer .children() .eq(index) .show() .siblings() .hide(); } } if(settings.thumbs){ thumbsContainer.find('li').each(function(){ if($(this).data('index') == '' + index){ $(this) .addClass('active') .siblings() .removeClass('active') return; } }); } }, doLightBox = function(){ if(settings.lightbox){ lightboxContainer .fadeIn(animationDelay) .bind('click.esc', function(event){ if(event.target == this){ lightboxContainer .fadeOut(animationDelay) .unbind('click.esc'); } }) $('body').bind('keydown.esc', function(event){ if(event.which == 27){ lightboxContainer.fadeOut(animationDelay); $('body').unbind('keydown.esc'); } }); } }, scrollRight = function(){ thumbsContainer .children('li:last') .prependTo(thumbsContainer); }, scrollLeft = function(){ thumbsContainer .children('li:first') .appendTo(thumbsContainer) }, bindControls = function(){ if(settings.thumbs){ thumbsContainer .parent() .append('') .append(''); thumbsContainer.parent().find('.imgScroll.left').bind('click', function(event){ scrollLeft(); event.preventDefault(); }); thumbsContainer.parent().find('.imgScroll.right').bind('click', function(event){ scrollRight(); event.preventDefault(); }); } if(settings.bigimg){ imgContainer .parent() .append('') .append(''); } if(settings.lightbox){ largeImgContainer .parent() .append('') .append(''); } if(settings.autoplayEnabled){ autoPlayIndicator .text('slideshow') .addClass('imgAutoplay') .bind('click', function(){ toggleAutoPlay(); return false; }) .append('') .appendTo(element); if(settings.autoplay){ toggleAutoPlay(); } } if(settings.lightbox){ largeImgContainer.parent().find('.imgScroll.right').bind('click', function(event){ var i = largeImgContainer.find('li:visible').next('li').length < 1 ? 0 : largeImgContainer.find('li:visible').next('li').index(); goToSlide(i); toggleAutoPlay(true); event.preventDefault(); }); largeImgContainer.parent().find('.imgScroll.left').bind('click', function(event){ var i = largeImgContainer.find('li:visible').prev('li').length < 1 ? largeImgContainer.find('li').length - 1 : largeImgContainer.find('li:visible').prev('li').index(); goToSlide(i); toggleAutoPlay(true); event.preventDefault(); }); } if(settings.bigimg){ imgContainer.parent().find('.imgScroll.right').bind('click', function(event){ var i = imgContainer.find('li:visible').next('li').length < 1 ? 0 : imgContainer.find('li:visible').next('li').index(); goToSlide(i); toggleAutoPlay(true); event.preventDefault(); }); imgContainer.parent().find('.imgScroll.left').bind('click', function(event){ var i = imgContainer.find('li:visible').prev('li').length < 1 ? imgContainer.find('li').length - 1 : imgContainer.find('li:visible').prev('li').index(); goToSlide(i); toggleAutoPlay(true); event.preventDefault(); }); } }, toggleAutoPlay = function(clear){ if(autoPlay || clear){ window.clearInterval(timer); autoPlay = false; autoPlayIndicator.removeClass('autoPlayEnabled'); } else { timer = window.setInterval(function(){ var i = imgContainer.find('li:visible').next('li').length < 1 ? 0 : imgContainer.find('li:visible').next('li').index(); goToSlide(i); }, 2500); autoPlay = true; autoPlayIndicator.addClass('autoPlayEnabled'); } return autoPlay; } $.ajax({ url: '/Handlers/GalleryImages.ashx?GalleryName=' + $.trim(element.find('.galleryname').text()), //url: '/test/gallery.xml', dataType: 'text', success: function(data) { if (window.DOMParser) { parser = new DOMParser(); xmlDoc = parser.parseFromString(data,"text/xml"); } else // Internet Explorer { xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async = 'false'; xmlDoc.loadXML(data); } buildGallery(xmlDoc, $.trim(element.find('.gallerycategory').text())); bindControls(); } }); }); }