$.fn.delay = function(time, callback){
    // Empty function:
    jQuery.fx.step.delay = function(){};
    // Return meaningless animation, (will be added to queue)
    return this.animate({delay:1}, time, callback);
}

$(document).ready(function() {

	if($.fn.cycle) {
		$('.slideshow:not(.slideshow-processed)').each(function(index) {
			$(this).cycle({
				delay: (2000 * index)
			}).addClass('slideshow-processed');
		});
	}
	
	// Horizontal scrollers
	
	if($.fn.serialScroll) {
		
		var productScroller = '#product-gallery .horizontal-scroller';
		var headerScroller = '#header-categories .horizontal-scroller';
		var scrollers = $('.horizontal-scroller').not('.scroller-processed');
		scrollers.each(function(index) {
		
			var target = $(this);
			$('div.pager', target).hide();
			var fading = target.hasClass('fading');
			if(jQuery.browser.msie == true && jQuery.browser.version < 7) {
				fading = false;
			}
			var parent = target.parent();
			var parentWidth = parent.width();
			var width = 0;
			
			var options = {items: 'li.item', duration: 100, cycle: true, constant: false, jump: false, force:true, margin:true};
			
			options.prev = parent.siblings('a.arrow-left');
			options.next = parent.siblings('a.arrow-right');
							
			var active = {};
			var current = 0;
			var items = $(options.items, target);
			var first = $(options.items+':first-child', target).addClass('active first');
			var last = $(options.items+':last-child', target).addClass('last');
			
			items.each(function() {
				width += $(this).outerWidth();
				$('.details', this).css({display:'none'});
			});
			
			if(fading) {
				items.not('.active').fadeTo(0, 0.3);
			}
			
			options.onAfter = function(item) {
				if(fading) {
					items.not(item).fadeTo(200, 0.3);
					$(item).fadeTo(200, 1);
				}
				items.not(item).removeClass('active');
				$(item).addClass('active');
				
				active = item;
				var relation = $(item).attr('rel');
				var selector = 'li.item[rel='+relation+']';
				var related = target.is(productScroller) ? $(selector, headerScroller) : $(selector, productScroller);
				var index = target.is(productScroller) ? $(headerScroller).find('li.item').index(related) : $(productScroller).find('li.item').index(related);
				
				if(target.is(productScroller)) {
					$(headerScroller).trigger('goto', index);
					if(current != index || index == 0) {
						var replace = $('.details', item);
						if(fading == true) {
							$('#content-left div.product-details').fadeTo(0, 0).html(replace.html()).fadeTo(500, 1);
						} else {
							$('#content-left div.product-details').html(replace.html());
						}
					}
					$('div.pager').hide();
					$('div.pager', item).show();
				}
				if(target.is(headerScroller)) {
					$(productScroller).trigger('goto', index);
				}
				current = index;
			};
			options.onBefore = function(event, target, container, items, position) {
				if(items.index(active) == position) {
					return false;
				}
			}
			var pagers = $('li.item div.pager', productScroller).each(function(index) {
				var scroller = $(productScroller);
				var pager = $(this);
				$('li a.pager-previous', pager).click(function(event) {
					scroller.trigger('prev');
				});
				$('li a.pager-next', pager).click(function(event) {
					scroller.trigger('next');
				});
				$('li a.pager-item', pager).each(function(i) {
					$(this).click(function(event) {
						scroller.trigger('goto', (i + 1));
					});
				});
			});
			target.serialScroll(options).addClass('scroller-processed');
			
			if(target.is(headerScroller)) {
				items.each(function(index) {
					var item = $(this);
					item.bind('click', function(event) {
						var relation = $(this).attr('rel');
						var selector = 'li.item[rel='+relation+']';
						var related = $(selector, productScroller);
						var index = $(productScroller).find('li.item').index(related);
						$(productScroller).trigger('goto', index);
					});
					item.hover(
						function() {if(fading){$(this).animate({opacity:1}, 200);}},
						function() {if(fading){$(this).not('.active').animate({opacity:0.3}, 200);}}
					);
				});
			}
			//$('.scroller-items-wrapper', target).width(width);
		});
	}
});
