//var count = 0;
var HighlightCycleThrough = function() {
		HighlightSlideShowVar.options.rotationCount++;
	//	console.log(HighlightSlideShowVar.options.rotationCount);
	//	console.log("length " + HighlightSlideShowVar.slides.length);
		if (HighlightSlideShowVar.options.rotationCount <= HighlightSlideShowVar.slides.length+1 || (HighlightSlideShowVar.slides.length == 1 && HighlightSlideShowVar.options.rotationCount < 2))
		{
   			HighlightSlideShowVar.cycleForward();
		}
}

var HighlightSlideShow = new Class({
		periodical: null,
		options: {
			slides: [],
            startIndex: 0,
            onShow: Class.empty,
          	wrap: true,
          	controlTarget: null,
          	rotationCount: 1
        },
        initialize: function(options){
                this.setOptions(options)
                this.controlTarget = this.options.controlTarget;
                this.slides = [];
				this.effects = [];
				this.addSlides(this.options.slides);
				if(this.slides.length)
				{
					this.showSlide(this.options.startIndex);
				}
				//count = 0;
				$clear(periodical);
 			    periodical = HighlightCycleThrough.periodical(5000);
 			    

        },
        addSlides: function(slides){
                $$(slides).each(function(slide, index){
                        this.slides.include($(slide));
                        this.effects[this.slides.indexOf(slide)] = new Fx.Style(slide, 'opacity');
                        //slide.addEvent('click', this.cycleForward.bind(this));
                        //slide.set('style', 'cursor:pointer');
                }, this);
        },
        addSlide: function(slide){
                this.addSlides([slide]);
        },
        cycleForward: function(){
				//alert('?');
				if($chk(this.now) && this.now < this.slides.length-1)
				{
					this.showSlide(this.now+1);
				}
                else if ((this.now && this.options.wrap) || this.slides.length == 1)
				{
					//console.log('end');
					moveToNext('image');//this.showSlide(0); //this.showSlide(0); //alert('end');
					//$clear(periodical);
				}
                else if(!$defined(this.now))
				{
					this.showSlide(this.options.startIndex);
				}
        },

        cycleBack: function(){
                if(this.now > 0) this.showSlide(this.now-1);
                else if(this.options.wrap) this.showSlide(this.slides.length-1);
        },
        showSlide: function(iToShow){

                var now = this.now;
                var currentSlide = this.slides[now];
                var slide = this.slides[iToShow];

                function fadeIn(s){
                        s.setStyles({
                                display:'block',
                                visibility: 'visible',
                                opacity: 0
                        });
                        //alert(s.style.display);
                        this.effects[this.slides.indexOf(s)].start(1);
                        this.fireEvent('onShow', [slide, iToShow]);
                };
                if(slide) {
                        if($chk(now) && now != iToShow){
                                this.effects[now].start(0).chain(function(){
                                        this.slides[now].setStyle('display', 'none');
                                        fadeIn.apply(this, [slide]);
                                }.bind(this));
                        } else fadeIn.apply(this, [slide]);
                        this.now = iToShow;
                }
                //periodical = CycleThrough.periodical(5000);

        }

});
HighlightSlideShow.implement(new Options, new Events);





