var SimpleSlideShowDemo = new Class({

	options: {

		slides: [],

		startIndex: 0,

		wrap: true,

		onShow: Class.empty, //Mootools 1.2: $empty

		onRotate: Class.empty,

		onStop: Class.empty,

		onAutoPlay: Class.empty,

		onShowSlide: Class.empty,

		slideInterval: 2500,

		auto:false,

		transitionDuration: 700,

		splitter:"&middot;",

		prev:"&laquo; ",

		next:" &raquo",

		play:"&infin;",

		stop:"&phi;",

		bigNavigation : true,

		smallNavigation: true,

		browser:true,

		addBarInside:true,

		hideText:false



	},

	initialize: function(container,options){



	  if (container[0].getParent().get('tag')=='a') {

     this.containerNest = container[0].getParent().getParent();

    } else {

      this.containerNest = container[0].getParent();

    }

    this.container = container;

		this.setOptions(options);

		this.slides = [];

		this.title = [];

		this.descr = [];

		this.effects = [];

		this.browserArr = [];

		this.playStatus = false;

		if (this.options.auto) this.playStatus = true;



    this.createStructure();



		this.addSlides(this.container);

		if(this.slides.length) this.showSlide(this.options.startIndex);

		if (this.options.auto) {

      this.autoplay();

     // this.playStatus = true;

    }

	},

	createFx: function(){

		this.slideFx = new Fx.Elements(this.slides, {duration: this.options.transitionDuration});

		this.slides.each(function(slide){

			slide.setStyle('opacity',0);

		});

	},	

	createStructure: function() {



	  var oldClass = this.containerNest.getProperty("class");

    this.containerNest.setProperty('class', '');

	  this.containerNest.addClass('rgslideshow');

	  

	  this.test = new Element('div').addClass(oldClass).injectBefore(this.containerNest);

	  this.containerNest.injectInside(this.test);

	  

	  if (!this.options.hideText) {

	  

      if (this.options.addBarInside) {

        this.nestAll = new Element('div').setProperty('class', 'rgsnest').injectTop(this.containerNest);    

        this.title = new Element('div').setProperty('class', 'rgstitle').injectInside(this.nestAll);

        this.description = new Element('div').setProperty('class', 'rgsdescription').injectInside(this.nestAll);

      }

      //this.nestAll = new Element('div').setProperty('class', 'rgslideshow').injectAfter(this.containerNest);

      

      //if (this.options.addBarInside) this.titleOp = new Element('div').setProperty('class', 'optitle').injectInside(this.nestAll);

    // this.nestDescription = new Element('div').setProperty('class', 'descr').injectInside(this.nestAll);

    //if (this.options.addBarInside) this.descriptionOp = new Element('div').setProperty('class', 'opdescr').injectInside(this.nestAll);

      

   

       if(this.options.browser) {

       

        this.navigation = new Element('div').setProperty('class', 'rgslideshownav').injectInside(this.nestAll);

        this.innerNavigation = new Element('div').setProperty('class', 'rgsnav2').injectInside(this.navigation);

        

        if(this.options.smallNavigation) this.prevEl = new Element('span').setProperty('class', 'rgsprev').injectInside(this.innerNavigation).set('html',this.options.prev).addEvent('click', this.cycleBack.bind(this));

        this.browser = new Element('div').setProperty('class', 'rgsbrowser').injectInside(this.innerNavigation);

       if(this.options.smallNavigation)  this.nextEl = new Element('span').setProperty('class', 'rgsnext').injectInside(this.innerNavigation).set('html',this.options.next).addEvent('click', this.cycleForward.bind(this));

  

        this.play = new Element('span').setProperty('class', 'rgsplay').injectInside(this.innerNavigation).addEvent('click', this.togglePlay.bind(this));    

  

        if (!this.playStatus) {

          this.play.set('html',this.options.play).setProperty('title',"Play");

        } else {

          this.play.set('html',this.options.stop).setProperty('title',"Stop");

        }

       } 

    }



    if (this.options.bigNavigation) {

      this.bigPrev = new Element('a').setProperties({'class': 'rgsbigprev', 'href': "javascript:void(0);"}).injectInside(this.containerNest).addEvent('click', this.cycleBack.bind(this));

      this.bigNext = new Element('a').setProperties({'class': 'rgsbignext', 'href': "javascript:void(0);"}).injectInside(this.containerNest).addEvent('click', this.cycleForward.bind(this));

    }    

    

    this.createFx();



  },

	addSlides: function(slides){

    var i =1;



		slides.each(function(slide){

			this.slides.include($(slide));



			this.effects[this.slides.indexOf(slide)] = new Fx.Tween(slide ,{property: 'opacity',transition: Fx.Transitions.Quart.easeInOut

																	});

      

      slide.addClass('rgssimg');

        var title="&nbsp;";

        var descr="";

        if (slide.getProperty("title")) {

          split = slide.getProperty("title").split("|");

          if (split[0]) {

            title = split[0];

            slide.setProperty("title",title);

          }

          if (split[1]) descr = split[1];

        }

 			this.descr[this.slides.indexOf(slide)] = descr;      

  			this.title[this.slides.indexOf(slide)] = title;

      if(this.options.browser) {  			

        this.browserEl = new Element('span').setProperties({'class': 'rgsbrowserEl', 'title': title}).set('html',this.slides.indexOf(slide)+1).injectInside(this.browser);

    //    this.browserEl.setProperty('id',this.options.paginationSelector+i);

  			this.browserEl.addEvent('click', this.cycleTo.bind(this,this.slides.indexOf(slide)));

  			this.browserArr[this.slides.indexOf(slide)] = this.browserEl;

  		}

			

			if (i!=1) {

      	if(this.options.browser)		this.splitter = new Element('span').setProperty('class', 'rgssplitEl').set('html',this.options.splitter).injectBefore(this.browserEl);

      	slide.setStyle('display','none');

      } else {



        if (!this.options.hideText && this.options.addBarInside) {

          var nestDiv = this.nestAll.getSize();

        } else {

          var nestDiv = this.containerNest.getSize();



        }

        var img = slide.getSize();

    		if(this.options.bigNavigation) {          

          this.bigPrev.setStyle('height',(slide.getProperty("height")-nestDiv.y)+'px');

          this.bigNext.setStyle('height',(slide.getProperty("height")-nestDiv.y)+'px');

          if(!this.options.addBarInside) {

	          this.bigPrev.setStyle('height',(slide.getProperty("height"))+'px');

	          this.bigNext.setStyle('height',(slide.getProperty("height"))+'px');



					}					 

        }

    		if(this.options.addBarInside) { 

    		  this.nestAll.setStyle('width',slide.getProperty("width")+'px');

    		}

     	 if(this.options.browser) {

          var width =  this.containerNest.getSize();

    		  this.navigation.setStyle('width',width.x-1+'px');

	

        }

      

      }

	 	i++;

		}, this);

			

	},





addSlide: function(slide){

		this.addSlides([slide]);

	},

	cycleForward: function(){

		if($chk(this.now) && this.now < this.slides.length-1) this.showSlide(this.now+1);

		else if ((this.now) && this.options.wrap) this.showSlide(0);

		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);

	},

	cycleTo: function(i){

		if(this.playStatus) {

      this.togglePlay();

    }	

    this.showSlide(i);

	},

	togglePlay: function() {

    if (this.playStatus) {

      this.stop();

      this.playStatus = false;

      this.play.innerHTML = this.options.play;

      this.play.setProperty('title',"Play");

    }

    else {

      this.autoplay();

      this.playStatus = true;

      this.play.innerHTML = this.options.stop;

      this.play.setProperty('title',"Stop");

    }

  },

	autoplay: function(){

		this.slideshowInt = this.rotate.periodical(this.options.slideInterval, this);

		this.fireEvent('onAutoPlay');

	},

	stop: function(){

		clearInterval(this.slideshowInt);

		this.fireEvent('onStop');

	},  	

	rotate: function(){

	

	this.cycleForward();

		this.fireEvent('onRotate');

	},	





   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

			});

			this.effects[this.slides.indexOf(s)].start(1);

			this.fireEvent('onShow', [slide, iToShow]);

		};

    

    if (!this.options.hideText) {

      if (this.options.addBarInside) this.description.innerHTML = this.title.innerHTML = "&nbsp;";

      if(this.options.browser) {

        this.browserArr.each(function(el) {

          el.removeClass("rgsact");

        });

      }

    }



		if(slide) {    

			if($chk(now) && now != iToShow){

				this.effects[now].start(0).chain(function(){

					this.slides[now].setStyle('display', 'none');

					fadeIn.apply(this, [slide]);

          if (!this.options.hideText && this.options.addBarInside) {

            this.description.innerHTML  = this.descr[iToShow];

            this.title.innerHTML  = this.title[iToShow];

            if(this.options.browser) this.browserArr[this.now].addClass("rgsact");

          }

				}.bind(this));

			} else {

        fadeIn.apply(this, [slide]);

          if (!this.options.hideText && this.options.addBarInside) {

  		      this.description.innerHTML  = this.descr[iToShow];

            this.title.innerHTML  = this.title[iToShow];

            if(this.options.browser) this.browserArr[0].addClass("rgsact");

          }

      }

			this.now = iToShow;

		}

		



	}

});

SimpleSlideShowDemo.implement(new Options, new Events);


