$(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();
}
});
});
}