/**
 总张数
 张数对应内容
   - 直接写所有内容到页面
   - 张数对应 url 地址 **
 自动播放间隔
*/

function PhotoSlide(){}
PhotoSlide.prototype={
  constructor: PhotoSlide,
  init: function(cfg){
    this.cfg={
      cur: 1,
      total: 20,
      dataurl: 'inc/p_1_%s.html',
      getUIElm: this.getUIElm,
      duration: 5000,
      autoSlide: false,
      errorMsg: '<span style="color:red">获取数据错误...</span>'
    };
    if(cfg){
      for(var i in cfg){
        this.cfg[i] = cfg[i];
      }
    }
    this.buildUI();
  },
  get: function(num, fn){
    num=Math.max(1,Math.min(num,this.cfg.total));
    if(this.cfg.cur==num){return}
    var this_=this;
    
    jQuery.ajax({
      type: "GET",
      url: this.cfg.dataurl.replace('%s',num),
      success: fn||function(d){this_.getDone(d)},
      error: function(d){this_.getDone()}
    });
    
    this.cfg.cur=num;
    this.getUIElm('status').html(num + '/' + this.cfg.total);
    this.updateBtnStatus();
  },
  getDone: function(d){
    this.getUIElm('detailBox').html(d || this.cfg.errorMsg);
  },
  buildUI: function(){
    this.updateBtnStatus();
    var btnP=this.getUIElm('btnP'),
        btnN=this.getUIElm('btnN'),
        btnPP=this.getUIElm('btnPlayPause'),
        this_=this;
    
    btnP.click(function(){
      this.blur();
      if(btnP.hasClass('pg')){return false}
      this_.get(this_.cfg.cur-1);
      this_.setAutoSlide(true);
      return false;
    });
    btnN.click(function(){
      this.blur();
      if(btnP.hasClass('ng')){return false}
      this_.get(this_.cfg.cur+1);
      this_.setAutoSlide(true);
      return false;
    });
    var btnPP=this.getUIElm('btnPlayPause');
    btnPP.click(function(){
      this.blur();
      btnPP.toggleClass('pause');
      this_.cfg.autoSlide=btnPP.hasClass('pause');
      btnPP.html('P' + (this_.cfg.autoSlide ? 'ause' : 'lay'));
      this_.setAutoSlide(this_.cfg.autoSlide);
      return false;
    });
    if(this.cfg.autoSlide!=btnPP.hasClass('pause')){
      btnPP.click();
    }
  },
  setAutoSlide: function(f){
    if(this.cfg.autoSlide&&f){
      this.slideTimer&&clearInterval(this.slideTimer);
      var this_=this;
      this.slideTimer=setInterval(function(){
          var n=this_.cfg.cur+1;
          if(n>this_.cfg.total){n=1}
          this_.get(n);
        },this.cfg.duration);
    }else{
      this.slideTimer&&clearInterval(this.slideTimer);
    }
  },
  updateBtnStatus: function(n){
    n=this.cfg.cur;
    if(n>1){
      this.getUIElm('btnP').removeClass('pg');
    }else{
      this.getUIElm('btnP').addClass('pg');
    }
    if(n<this.cfg.total){
      this.getUIElm('btnN').removeClass('ng');
    }else{
      this.getUIElm('btnN').addClass('ng');
    }
  },
  getUIElm: function(n){
    if(!this.uic){
      this.uic={};
      this.fnR=jQuery('#photo_fn_box');
      this.detailBox=jQuery('#photo_detail_box');
    }
    if(n in this.uic){
      return this.uic[n]
    }
    var r;
    switch (n){
      case"status":
        r=this.fnR.find('>.s1>b');
        break;
      case"btnP":
        r=this.fnR.find('>.s1>a.prev');
        break;
      case"btnN":
        r=this.fnR.find('>.s1>a.next');
        break;
      case"btnN":
        r=this.fnR.find('>.s1>a.next');
        break;
      case"btnPlayPause":
        r=this.fnR.find('>.s2>a');
        break;
      case"detailBox":
        r=this.detailBox;
        break;
      default:
        break;
    }
    this.uic[n]=r;
    return r;
      /*
      <span class="s1"><b>21/99</b><a href="#" class="prev pg"></a><a href="#" class="next"></a></span>
      <span class="s2"><a href="#" class="play pause">Pause</a></span>
      */
  }
}