var TINY={};

function ss(i){
  return document.getElementById(i)
  }
function $$(e,p){
  p=p||document; return p.getElementsByTagName(e)
  }

TINY.slideshow=function(ressourcesId){
  this.infoSpeed=this.imgSpeed=this.speed=10;
  this.thumbOpacity=this.navHover=70;
  this.navOpacity=25;
  this.scrollSpeed=5;
  this.letterbox='#000';
  this.ressourcesId=ressourcesId;
  this.c=0;
  this.a=[];
};

TINY.slideshow.prototype={
  init:function(slideshow,image,imgprev,imgnext,imglink){
    slideshow=ss(slideshow);
    var ressourceList=$$('li',slideshow), i=0, w=0;
    this.nbRessources=ressourceList.length;
    this.imglink=ss(imglink);
    this.imgnext=ss(image);
    this.r=ss(this.info);
    this.o=parseInt(TINY.style.val(image,'width'));
    if(this.thumbs){
      var u=ss(this.left), r=ss(this.right);
      this.p=ss(this.thumbs);
    }
    for(i;i<this.nbRessources;i++){
      this.a[i]={};
      var ressource=ressourceList[i], a=this.a[i];
      a.t=$$('h3',ressource)[0].innerHTML;
      a.d=$$('p',ressource)[0].innerHTML;
      a.link=$$('a',ressource)[0]?$$('a',ressource)[0].href:'';
      a.p=$$('span',ressource)[0].innerHTML;
      a.width=parseInt($("span.width",ressource).text());
      a.height=parseInt($("span.height",ressource).text());
      a.infoURL=$("span.infoURL",ressource).text();
      if(this.thumbs){
        var imgThumb=$$('img',ressource)[0];
        imgThumb.style.height='75px';
        this.p.appendChild(imgThumb);
        w+=parseInt(imgThumb.offsetWidth);
        if(i!=this.nbRessources-1){
          imgThumb.style.marginRight=this.spacing+'px';
          w+=this.spacing;
        }
        this.p.style.width=w+1+'px';
        imgThumb.style.opacity=this.thumbOpacity/100;
        imgThumb.style.filter='alpha(opacity='+this.thumbOpacity+')';
        imgThumb.onmouseover=new Function('TINY.alpha.set(this,100,5)');
        imgThumb.onmouseout=new Function('TINY.alpha.set(this,'+this.thumbOpacity+',5)');
        imgThumb.onclick=new Function(this.ressourcesId+'.pr('+i+',1)')
      }
    }
    if(this.thumbs&&w>$("#slidearea").width()) {
      u.onmouseover=new Function('TINY.scroll.init("'+this.thumbs+'",-1,'+this.scrollSpeed+')');
      u.onmouseout=r.onmouseout=new Function('TINY.scroll.cl("'+this.thumbs+'")');
      r.onmouseover=new Function('TINY.scroll.init("'+this.thumbs+'",1,'+this.scrollSpeed+')');
    }
    if(imgprev&&imgnext){
      imgprev=ss(imgprev);
      imgnext=ss(imgnext);
      imgprev.style.opacity=imgnext.style.opacity=this.navOpacity/100;
      imgprev.style.filter=imgnext.style.filter='alpha(opacity='+this.navOpacity+')';
      imgprev.onmouseover=imgnext.onmouseover=new Function('TINY.alpha.set(this,'+this.navHover+',5)');
      imgprev.onmouseout=imgnext.onmouseout=new Function('TINY.alpha.set(this,'+this.navOpacity+',5)');
      imgprev.onclick=new Function(this.ressourcesId+'.mv(-1,1)');
      imgnext.onclick=new Function(this.ressourcesId+'.mv(1,1)')
    }
    this.auto?this.is(0,0):this.is(0,1)
  },
  mv:function(d,c){
    var t=this.c+d;
    this.c=t=t<0?this.nbRessources-1:t>this.nbRessources-1?0:t;
    this.pr(t,c)
  },
  pr:function(t,c){
    clearTimeout(this.lt);
    if(c){
      clearTimeout(this.at)
    }
    this.c=t;
    this.is(t,c)
  },
  is:function(s,c){
    if(this.info){
      TINY.height.set(this.r,1,this.infoSpeed/2,-1)
    }
    var i=new Image();
    i.style.opacity=0;
    i.style.filter='alpha(opacity=0)';
    this.i=i;
    i.onload=new Function(this.ressourcesId+'.le('+s+','+c+')');
    i.src=this.a[s].link;
    i.style.height="300px";
    if(this.thumbs){
      var a=$$('img',this.p), x=0;
      for(x;x<a.length;x++){
        a[x].style.borderColor=x!=s?'':this.active
      }
    }
    this.imglink.className="";
  },
  le:function(s,c){
    this.imgnext.appendChild(this.i);
    var w = this.o-Math.floor(this.i.offsetWidth*300/this.i.offsetHeight);
    if(w>0){
      var l=Math.floor(w/2);
      this.i.style.borderLeft=l+'px solid '+this.letterbox;
      this.i.style.borderRight=(w-l)+'px solid '+this.letterbox
    }
    TINY.alpha.set(this.i,100,this.imgSpeed);
    var n=new Function(this.ressourcesId+'.nf('+s+')');
    this.lt=setTimeout(n,this.imgSpeed*100);
    if(!c){
      this.at=setTimeout(new Function(this.ressourcesId+'.mv(1,0)'),this.speed*1000)
    }
    if(this.a[s].link!=''){
      var that = this;
      $("#image > img, #imglink").css({cursor:"pointer"}).unbind("click").click(function() {
        var infoURL = that.a[s].infoURL;
        if(that.a[s].p.substr(that.a[s].p.length-4,4)===".flv") {
          var width = that.a[s].width?that.a[s].width:500;
          var height = that.a[s].height?that.a[s].height:420;
          $.fancybox({
            autoScale: false,
            autoDimensions: false,
            width: width+4,
            height: height+4+(infoURL?20:0),
            hideOnContentClick: false,
            content: '<a href="'+that.a[s].p+'" style="display:block;width:'+width+'px;height:'+height+'px" id="player-container"></a>' +
              (infoURL?'<p><a href="'+infoURL+'">'+infoURL+'</a></p>':''),
            onComplete: function() {
              $f("player-container","/public/flowplayer/flowplayer-3.1.5.swf")
              .onFinish(function() {
                $('#fancybox-close').trigger('click');
              });
            }
          });
        }
        else {
          if(infoURL) {
            $.fancybox({
              content: '<img src='+that.a[s].p+' />'
                + '<p class="photo"><a href="'+infoURL+'">'+infoURL+'</a></p>'
            });
          }
          else {
            $.fancybox({ href: that.a[s].p, type: 'image' });
          }
        }
      });
      var linkClass = "linkhover", defaultClass= "";
      if(that.a[s].p.substr(-4)===".flv") {
        this.imglink.className="video";
        linkClass = "video";
        defaultClass = "video";
      }
      this.imglink.onmouseover=new Function('this.className="'+linkClass+'"');
      this.imglink.onmouseout=new Function('this.className="'+defaultClass+'"');
      this.imglink.style.cursor='pointer'
    }else{
      this.imglink.onclick=this.imglink.onmouseover=null;
      this.imglink.style.cursor='default'
    }
    var img = $$('img',this.imgnext);
    if(img.length>2){
      this.imgnext.removeChild(img[0])
    }
  },
  nf:function(s){
    if(this.info){
      s=this.a[s];
      $$('h3',this.r)[0].innerHTML=s.t;
      $$('p',this.r)[0].innerHTML=s.d;
      this.r.style.height='auto';
      var ressource=parseInt(this.r.offsetHeight);
      this.r.style.height=0;
      TINY.height.set(this.r,ressource,this.infoSpeed,0)
    }
  }
};

TINY.scroll=function(){
  return{
    init:function(e,d,s){
      e=typeof e=='object'?e:ss(e); var p=e.style.left||TINY.style.val(e,'left'); e.style.left=p;
      var l=d==1?parseInt(e.offsetWidth)-parseInt(e.parentNode.offsetWidth):0; e.si=setInterval(function(){
        TINY.scroll.mv(e,l,d,s)
        },20)
    },
    mv:function(e,l,d,s){
      var c=parseInt(e.style.left); if(c==l){
        TINY.scroll.cl(e)
        }else{
        var i=Math.abs(l+c); i=i<s?i:s; var n=c-i*d; e.style.left=n+'px'
        }
    },
    cl:function(e){
      e=typeof e=='object'?e:ss(e); clearInterval(e.si)
      }
  }
}();

TINY.height=function(){
  return{
    set:function(e,h,s,d){
      e=typeof e=='object'?e:ss(e); var oh=e.offsetHeight, ho=e.style.height||TINY.style.val(e,'height');
      ho=oh-parseInt(ho); var hd=oh-ho>h?-1:1; clearInterval(e.si); e.si=setInterval(function(){
        TINY.height.tw(e,h,ho,hd,s)
        },20)
    },
    tw:function(e,h,ho,hd,s){
      var oh=e.offsetHeight-ho;
      if(oh==h){
        clearInterval(e.si)
        }else{
        if(oh!=h){
          e.style.height=oh+(Math.ceil(Math.abs(h-oh)/s)*hd)+'px'
          }
        }
    }
  }
}();

TINY.alpha=function(){
  return{
    set:function(e,a,s){
      e=typeof e=='object'?e:ss(e); var o=e.style.opacity||TINY.style.val(e,'opacity'),
      d=a>o*100?1:-1; e.style.opacity=o; clearInterval(e.ai); e.ai=setInterval(function(){
        TINY.alpha.tw(e,a,d,s)
        },20)
    },
    tw:function(e,a,d,s){
      var o=Math.round(e.style.opacity*100);
      if(o==a){
        clearInterval(e.ai)
        }else{
        var n=o+Math.ceil(Math.abs(a-o)/s)*d; e.style.opacity=n/100; e.style.filter='alpha(opacity='+n+')'
        }
    }
  }
}();

TINY.style=function(){
  return{
    val:function(e,p){
      e=typeof e=='object'?e:ss(e); return e.currentStyle?e.currentStyle[p]:document.defaultView.getComputedStyle(e,null).getPropertyValue(p)
      }
    }
  }();

