(function($) {
    
    $.fn.slidergallery = function(o) {
        
        var opts = {
            fx: 'scrollHorz',
            speed: 450,
            thumbHoverSpeed: 200,
            first: 0,
			next: '#sliderGalleryBG .next',
			prev: '#sliderGalleryBG .prev',
            buildPager: true
        }
        
        if (o != null)
            $.extend(opts, o);
        
        return this.each(function() {
           
            var nav = $('<ul></ul>').attr('id', $(this).attr('id') + 'Nav');
            
            $(this).after(nav);
            
            $(this).cycle({
                fx: opts.fx,
                speed: opts.speed,
                timeout: 0,
                startingSlide: opts.first,
                pager: nav,
                pagerAnchorBuilder: (opts.buildPager ? navBuilder : function() { return ''; }),
                containerResize: 0,
                cleartypeNoBg: true,
                next: opts.next,
                prev: opts.prev,
                prevNextClick: setActive
            });
            
            nav.slidetip({ duration: opts.thumbHoverSpeed });
            
            nav.children('li').click(function() {
                $(this).siblings().removeClass('active');
                $(this).addClass('active');
            });
            
            nav.children('li').eq(opts.first).addClass('active');
            
            function setActive(isNext, zeroBasedSlideIndex, slideElement) {
					 var c = nav.children('li');
					 var lengthLI = nav.find('li').length;
                c.removeClass('active');
                c.eq(zeroBasedSlideIndex).addClass('active');
                c.eq(zeroBasedSlideIndex).trigger('mouseover');
					if(lengthLI - 2 == zeroBasedSlideIndex) {
						 $(opts.next).hide(0);
					} else {
						 $(opts.next).show(0);
					}
					if(0 == zeroBasedSlideIndex) {
						 $(opts.prev).hide(0);
					} else {
						 $(opts.prev).show(0);
					}
            }
            
        });
        
        function navBuilder(index, DOMelement) {
            var e = $(DOMelement);
            
            var imgThumbSrc = e.find('img').attr('src');
            imgThumbSrc = imgThumbSrc.split('.');
            imgThumbSrc[imgThumbSrc.length - 2] = imgThumbSrc[imgThumbSrc.length - 2] + '_thumb';
            imgThumbSrc = imgThumbSrc.join('.');
            
            var hrefLink = e.find('a').attr('href');
            
            var li = $('<li></li>');
            var an = $('<a></a>').attr('onclick', 'window.location.href=\"' + hrefLink +'"');
            
                

            var img = $('<img class="thumb" />').attr('src',imgThumbSrc).attr('alt', e.find('img').attr('alt'));
    
            if(hrefLink) {
            	an.append(img);
            	li.append(an);
            }
            else li.append(img);
            
            return li;
        }
    }
    
    $.fn.slidetip = function(o) {
        
        var opts = {
            duration: 500,
            timeout: null
        }
        
        if (o != null)
            $.extend(opts, o);
        
        return this.each(function() {
            var li = $('<li class="tip"></li>');
            var span = $('<span></span>');
            //var img = $('<img src="pics/bg_gallery-slider.png" />');
            
            span.text($(this).children().eq(0).find('img').attr('alt'));
            
            li.css({
                position: 'absolute',
                left: 0
            });
            
            li.append(span);
            
            //li.append(img);
            
            $(this).css('position', 'relative');
            
            $(this).children().hover(
                function() {
                    var txt = $(this).find('img').attr('alt');
                    if (opts.timeout != null)
                        window.clearTimeout(opts.timeout);
                    li.stop(true, false).animate({
                        left: $(this).position().left + 10
                    }, opts.duration, 'linear', function() { span.text(txt); });
                },
                function() {
                    var t = this;
                    opts.timeout = window.setTimeout(function() { $(t).siblings('.active').trigger('mouseover'); }, 250);
                }
            ).click(function() {
                $(this).trigger('mouseover');
            });
            
            $(this).append(li);
            
            $(this).children().eq(0).trigger('mouseover');
            
        });
    }
    
})(jQuery)


