var frThumbSlider = new Class({
  initialize:function(basediv,options){
    this.setOptions({
      mode: 'default',
      duration: 1200,
      transition: Fx.Transitions.Quint.easeIn,
      wait: false
    },options);
    this.posx = 0;
    this.page = 1;
    this.pags = Math.ceil(this.options.count/10);
    this.base = $$(basediv);
    this.image = this.base.getElement('#image');
    var btnl = this.base.getElement('.mv_btnl');
    var btnr = this.base.getElement('.mv_btnr');
    this.dis = this.base.getElement('#rrz');
    this.pag = this.base.getElement('#rrp');
    this.pag.set('text','1/'+this.pags);
    this.btl = $$(btnl);
    this.btr = $$(btnr);
    this.ifx = new Fx.Morph(this.image[0],this.options);
    this.hover(this.btl,'-64px 0px');
    if(this.options.count<10) this.hover(this.btr,'-64px 0px');
    var thumbs = this.base.getElements('.stripe .thumbx');
    $$(thumbs).each(function(item,i){
      item.addEvents({
        click:function(){
          new Request.JSON({
            method: 'post',
            url: "./getImage.php",
            data: "_iid="+item.id,
            onSuccess:function(response){
              x = parseFloat(response._imgx);
              y = parseFloat(response._imgy);
              if(x > y){
                x = 640;
                y = 480;
              } else {
                x = 480;
                y = 640;
              }
              this.ifx.start({'background-image':'url(_dat/albums/'+response._albumID+'/no_'+response._img+')',width:x,height:y,opacity:1});
              this.dis.set('text',''+(1+this.posx+i)+'/'+this.options.count+'');
            }.bind(this)
          }).send();
        }.bind(this),
        mouseenter:function(){
        }.bind(this),
        mouseleave:function(){
        }.bind(this)
      });
    }.bind(this));
    this.btl.addEvents({
      click:function(){
        if(this.page>0) {
          --this.page;
          this.posx=this.posx-10;
          this.cnav();
          this.eslid(this.posx,thumbs);
        }
      }.bind(this),
      mouseenter:function(){
        if(this.page>1) this.hover(this.btl,'-32px 0px');
      }.bind(this),
      mouseleave:function(){
        if(this.page>1) this.hover(this.btl,'0px 0px');
      }.bind(this)
    });
    this.btr.addEvents({
      click:function(){
        if(this.page<this.pags) {
          this.page++;
          this.posx=this.posx+10;
          this.cnav();
          this.eslid(this.posx,thumbs);
        }
      }.bind(this),
      mouseenter:function(){
        if(this.page<this.pags) this.hover(this.btr,'-32px 0px');
      }.bind(this),
      mouseleave:function(){
        if(this.page<this.pags) this.hover(this.btr,'0px 0px');
      }.bind(this)
    });
  },
  hover:function(btn,pos){
    btn.setStyle('background-position',pos);
  },
  eslid:function(pos,thumbs){
    if(this.posx>=0 && this.posx<this.options.count) {        
      for(i=0;i<10;i++) {
        $$(thumbs)[i].setStyles({'background-image':'url(_img/thnull.png)','border':'none'});
      }
      new Request.JSON({
        method: 'post',
        url: "./getImages.php",
        data: "pos="+pos+"&alb="+this.options.album,
        onSuccess:function(response){
          response.each(function(item,i){
            $$(thumbs)[i].setStyles({'background-image':'url(_dat/albums/'+response[i]._albumID+'/th_'+response[i]._img+')','border':'1px solid #777'});
            $$(thumbs)[i].set('id','i'+response[i]._iid);
          });
        }.bind(this)
      }).send();
    }
  },
  cnav:function(){
    if(this.page>1) {
      this.hover(this.btl,'0px 0px');          
    } else {
      this.hover(this.btl,'-64px 0px');
    }
    if(this.page<this.pags) {
      this.hover(this.btr,'0px 0px');
    } else {
      this.hover(this.btr,'-64px 0px');
    }
    this.pag.set('text',this.page+'/'+this.pags);  
  }
});
frThumbSlider.implement(new Events);
frThumbSlider.implement(new Options);

var frSlider = new Class({
  initialize:function(div,options){
    this.setOptions({
      interval: 5000,
      duration: 1200,
      transition: Fx.Transitions.Expo.easeOut,
      wait: false,      
      size: 240,
      mode: 'horizontal',
      autoRun: true,
      prevIndex: null,
      nextIndex: null,
      currIndex: 0,
      startItem: 0,
      onRunning: null,
      links: []
    },options);   
    this.div = $$(div);
    this.fx = [];
    this.fx2 = [];
    this.dfx = [];
    this.items = this.div.getElements('.slideitem');
    var items = this.items;
    this.options.items = $$(items);
    this.options.items.each(function(item,i){
      this.fx[i] = new Fx.Morph(item,this.options);
      this.fx2[i] = new Fx.Morph(item,this.options);
      if(i>0) item.tween('left',448);
    }.bind(this));
    this.descs = this.div.getElements('.slidedesc');
    var descs = this.descs;
    this.options.descs = $$(descs)
    this.options.descs.each(function(item,i) {
      this.dfx[i] = new Fx.Morph(item,{
        transition:Fx.Transitions.Bounce.easeOut,
        duration:800 //this.options.duration
      });
    }.bind(this));
    this.mask = this.div.getElement('.smask');
    this.mores = this.div.getElements('.slidedesc .more');
    var mores = this.mores;
    this.options.mores = $$(mores);
    this.options.mores.each(function(more,i) {
      this.options.links[i] = more.getElement('a').get('href');
    }.bind(this));
    if(this.options.autoRun){
      this.play(this.options.interval,'next',true);
    }
  },
  prev:function(manual){
    this.options.currIndex += this.options.currIndex > 0 ? -1 : this.options.items.length-1;
    this.running(null,manual,'prev');  
  },
  next:function(manual){   
    this.options.currIndex += (this.options.currIndex < this.options.items.length - 1) ? 1 : (1 - this.options.items.length);
    this.running(null,manual,'next');
  },  
  play:function(delay,direction,wait){
    this.stop(); 
    if(!wait){this[direction](false);}
    this.options.autoRun = this[direction].periodical(delay,this,false);
  },
  stop:function(){  
    $clear(this.options.autoRun);  
  },
  running:function(item,manual,rMode){
    this.options.prevIndex = this.options.currIndex + (this.options.currIndex > 0 ? -1 : this.options.items.length - 1);
    this.options.nextIndex = this.options.currIndex + (this.options.currIndex < this.options.items.length - 1 ? 1 : 1 - this.options.items.length);
    if(rMode == 'next'){
      this.mask.set('onclick','GoTo(\''+this.options.links[this.options.currIndex]+'\')');
      this.dfx[this.options.prevIndex].start({top:192,opacity:0});
      this.fx2[this.options.prevIndex].start({left:448});
      this.fx[this.options.currIndex].start({left:0});
      this.dfx[this.options.currIndex].start({top:132,opacity:0.8});
    }
    if(rMode == 'prev'){
      this.fx2[this.options.nextIndex].start({'left':448});
      this.fx[this.options.currIndex].start({'left':0});
    }    
    if(manual){
      this.stop();
    }
    if(this.onRunning){
      this.onRunning(this.options.items[this.options.currIndex],(this.buttons ? this.buttons[this.options.currIndex]:null)); 
    }
    if(manual && this.options.autoRun){ 
      this.play(this.options.interval,'next',true);
    }     
  }                                                                             
});
frSlider.implement(new Events);
frSlider.implement(new Options);
