var TINY={};
function $(i){return document.getElementById(i)}
function $$(e,p){p=p||document;return p.getElementsByTagName(e)}
TINY.slideshow=function(n){
this.infoSpeed=this.imgSpeed=this.speed=10;
this.thumbOpacity=this.navHover=70;
this.navOpacity=25;
this.scrollSpeed=5;
this.letterbox='#000';
this.n=n;
this.c=0;
this.a=[]
};
TINY.slideshow.prototype={
 init:function(s,z,b,f,q){
   s=$(s); //包含li的ul对象
   var m=$$('li',s),i=0,w=0; //m为ul下li对象的集合
   this.l=m.length;//计算li集合中的对象数量,应为8
   this.q=$(q);//q代表id为"imglink"对象
   this.f=$(z);//f代表id为"image"对象
   this.r=$(this.info); //r为"information"对象，this.info=information
   this.o=parseInt(TINY.style.val(z,'width')); //获取"image"对象'width'样式值,本例中为500px
   if(this.thumbs){
     var u=$(this.left),r=$(this.right); //u为"slideleft"，r为"slideright"
	 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+')');
	 this.p=$(this.thumbs);
	}
	for(i;i<this.l;i++){
	     this.a[i]={};
		 var h=m[i],a=this.a[i]; //h代表li对象,
		 a.t=$$('h3',h)[0].innerHTML;
		 a.d=$$('p',h)[0].innerHTML;
		 a.l=$$('a',h)[0]?$$('a',h)[0].href:'';
		 a.p=$$('span',h)[0].innerHTML;
		 if(this.thumbs){
		    var g=$$('img',h)[0];
		    this.p.appendChild(g);
		    w+=parseInt(g.offsetWidth); //offsetWidth是对象的可见宽度，包滚动条等边线，会随窗口的显示大小改变;scrollWidth 是对象的实际内容的宽，不包边线宽度，会随对象中内容的多少改变（内容多了可能会改变对象的实际宽度）。clientWidth 是对象可见的宽度，不包滚动条等边线，会随窗口的显示大小改变。 offsetWidth 是对象的可见宽度，包滚动条等边线，会随窗口的显示大小改变。
		    if(i!=this.l-1){g.style.marginRight=this.spacing+'px';w+=this.spacing}
		    this.p.style.width=w+'px';
		    g.style.opacity=this.thumbOpacity/100;
		    g.style.filter='alpha(opacity='+this.thumbOpacity+')';
		    g.onmouseover=new Function('TINY.alpha.set(this,100,5)');
		    g.onmouseout=new Function('TINY.alpha.set(this,'+this.thumbOpacity+',5)');
		    g.onclick=new Function(this.n+'.pr('+i+',1)')
		    //g.onmouseover=new Function(this.n+'.pr('+i+',1)')
		  }
		}		 
	 if(b&&f){ //b为imgprev ; f为imgnext
	     b=$(b);
		 f=$(f);
		 b.style.opacity=f.style.opacity=this.navOpacity/100;
		 b.style.filter=f.style.filter='alpha(opacity='+this.navOpacity+')';
		 b.onmouseover=f.onmouseover=new Function('TINY.alpha.set(this,'+this.navHover+',5)');
		 b.onmouseout=f.onmouseout=new Function('TINY.alpha.set(this,'+this.navOpacity+',5)');
		 b.onclick=new Function(this.n+'.mv(-1,1)');
		 f.onclick=new Function(this.n+'.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.l-1:t>this.l-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.n+'.le('+s+','+c+')');
   i.src=this.a[s].p;

   
   if(this.thumbs){
      var a=$$('img',this.p),l=a.length,x=0;
	  for(x;x<l;x++){
	     a[x].style.borderColor=x!=s?'':this.active}
   }
  },
 le:function(s,c){
   
   this.f.appendChild(this.i);
   var w=this.o-parseInt(this.i.offsetWidth);
   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.n+'.nf('+s+')');
	  this.lt=setTimeout(n,this.imgSpeed*100);
	  if(!c){
	    this.at=setTimeout(new Function(this.n+'.mv(1,0)'),this.speed*1000)}
	  if(this.a[s].l!=''){
	     this.q.onclick=new Function('window.location="'+this.a[s].l+'"');
		 this.q.onmouseover=new Function('this.className="'+this.link+'"');
		 this.q.onmouseout=new Function('this.className=""');
		 this.q.style.cursor='pointer'}
	  else{
	     this.q.onclick=this.q.onmouseover=null;
		 this.q.style.cursor='default'}
		 
	  var m=$$('img',this.f);
	  if(m.length>2){
	     this.f.removeChild(m[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 h=parseInt(this.r.offsetHeight);
	  this.r.style.height=0;
	  TINY.height.set(this.r,h,this.infoSpeed,0)
   }
 }
};
  
  
TINY.scroll=function(){
   return{
      init:function(e,d,s){
	     e=typeof e=='object'?e:$(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:$(e);
		clearInterval(e.si)}
	}
  }();
TINY.height=function(){
    return{
	   set:function(e,h,s,d){
	      e=typeof e=='object'?e:$(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:$(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 : $(e);
		  return e.currentStyle?e.currentStyle[p]:document.defaultView.getComputedStyle(e,null).getPropertyValue(p) 
		  /*因为写js经常需要用到访问样式，我们常用的做法是通过 DOM.style.XXX来读写样式信息的。可是DOM.style这种写法只能访问<DOM style=""></DOM>，这样在标签里内置的样式，如果样式写在<style type="text/css"></style>，或者.css文件里，那么就办法读到样式了。 
          其实呢，还有别的方法可以读到这些样式信息，方法有两种，一种是通过document.styleSheets对象，另一种是通过“最终样式”对象。其中 IE中这个对象叫做currentStyle,FF中这个对象叫做document.defaultView。*/
		  }
	  }
	}();
