

function galleriesfilmstrip(i, t, pt) {
 var isIE=window.ActiveXObject && typeof(document.getElementsByTagName("body")[0].style.opacity)=="undefined" ? true : false;
 var index=i;
 var last=null;
 var current=null;
 var gname=t;
 var target=document.getElementById(t);
 var progress=null;
 var slides=[];
 var filmstrip=null;
 var loaded=[];
 var length=0;
 var fTime=500;
 var sTime=0;
 var fr=20;
 var busy=0;
 var waiting=null;
 var maxw=target.offsetWidth;
 var maxh=target.offsetHeight;
 var mtw=0;
 var mth=0;
 var fsw=0;
 var fsl=0;
 var fst=0;
 var fsctr=null;
 var fsd=null;

 function makeImg(url, s) {
  var i=document.createElement("img");
  i.src=url;
  i.setAttribute("alt", gname);
  s.appendChild(i);
  waiting=i;
 }

 function getXY(el) {
  x=el.offsetLeft;
  y=el.offsetTop;
  tmp=el.offsetParent;
  while(tmp) {
   x+=tmp.offsetLeft;
   y+=tmp.offsetTop;
   tmp=tmp.offsetParent;
  }
  return { x:x, y:y };
 }

 function scroll() {
  var pWidth=fsctr.offsetWidth;
  if(fsd && fsw>pWidth) {
   var dx=(fsl-fst)>>1;
   fsd.style.left=dx+"px";
   fsl=dx;
  }
  setTimeout(scroll, fr);
 }

 function tMove(e) {
  if (window.event) e = window.event;
  var mx=e.clientX;
  var px=mx-(getXY(fsctr).x)+1;
  var pWidth=fsctr.offsetWidth;
  var aWidth=pWidth-mtw;
  var apx=px-(mtw>>1);
  if(apx<1) apx=1;
  if(apx>aWidth) apx=aWidth;
  fst=Math.floor((apx/aWidth)*(fsw-pWidth));
 }

 function fadeSlide() {
  var d=new Date();
  var ct=d.getTime();
  if(sTime==-1) {
   sTime=ct;
   current.style.display="block";
  }
  var o2=(fTime==0 ? 0 : (ct-sTime)/fTime);
  var o1=(fTime==0 ? 1 : 1-o2);
  if(o2>1) {
   o1=0;
   o2=1;
  }
  if(isIE) {
   if(last) last.style.filter="alpha(opacity="+(o1*100)+")";
   current.style.filter=(o2==1)?"":"alpha(opacity="+(o2*100)+")";
  }
  else {
   if(last) last.style.opacity=o1;
   current.style.opacity=o2;
  }
  if(o1>0) setTimeout(fadeSlide, fr);
  else {
   if(last) last.style.display="none";
   last=current;
   busy=0;
  }
 }

 function showSlide() {
  busy=1;
  progress.style.display="block";
  if(!loaded[index] && !waiting) {
   makeImg(slides[index].getElementsByTagName("span")[0].innerHTML, slides[index].getElementsByTagName("a")[0]);
  }
  if(waiting && !waiting.complete) {
   setTimeout(showSlide, 250);
  }
  else {
   if(waiting) {
    fiximg(waiting);
    waiting=null;
    loaded[index]=1;
   }
   current=slides[index];
   if(last != null) last.style.zIndex=1;
   current.style.zIndex=2;
   if(isIE) current.style.filter="alpha(opacity=0)";
   else current.style.opacity=0;
   current.style.display="block";
   sTime=-1;
   progress.style.display="none";
   fadeSlide();
  }
 }

 function fiximg(i) {
  var w=i.width;
  var h=i.height;
  if(w > maxw) {
   h=Math.ceil(maxw*(h/w));
   w=maxw;
  }
  if(h > maxh) {
   w=Math.ceil(maxh*(w/h));
   h=maxh;
  }
  i.width=w;
  i.height=h;
  var pn=i.parentNode.parentNode;
  i.style.marginLeft=((maxw-w)>>1)+"px";
  i.style.marginTop=((maxh-h)>>1)+"px";
  pn.style.left="0px";
  pn.style.top="0px";
 }

 function fixThumbs() {
  var thumbs=filmstrip.getElementsByTagName("img");
  var i=0;
  while(i<thumbs.length && thumbs[i].complete) {
   var tw=thumbs[i].width;
   var th=thumbs[i].height;
   if(tw>mtw) mtw=tw;
   if(th>mth) mth=th;
   i++;
  }
  if(i<thumbs.length) setTimeout(fixThumbs, 250);
  else {
   var aThumbs=filmstrip.getElementsByTagName("a");
   i=0;
   while(i<aThumbs.length) {
    aThumbs[i].style.width=mtw+"px";
    aThumbs[i].style.height=mth+"px";
    if(thumbs[i].width<mtw) thumbs[i].style.marginLeft=((mtw-thumbs[i].width)>>1)+"px";
    if(thumbs[i].height<mth) thumbs[i].style.marginTop=((mth-thumbs[i].height)>>1)+"px";
    i++;
   }
   var fsdA=filmstrip.getElementsByTagName("div");
   fsctr=fsdA[0];
   fsd=fsdA[1];
   fsctr.style.height=fsd.style.height=(mth+4)+"px";
   filmstrip.style.paddingTop=maxh+"px";
   target.style.height=(maxh+mth)+"px";
   fsw=length*(mtw+4);
   fsd.style.width=fsw+"px";
   addEvent(fsctr, 'mousemove', tMove);
   scroll();
  }
 }

 var tmpslides=target.getElementsByTagName("div");
 for(var i=0; i<tmpslides.length; i++) if(tmpslides[i].className=="slide") slides.push(tmpslides[i]);
 length=slides.length;
 filmstrip=document.createElement("div");
 progress=document.createElement("div");
 filmstrip.className="gfilmstrip";
 filmstrip.style.top="-9999px";
 progress.className="progress";
 progress.style.zIndex="9";
 progress.style.display="none";
 progress.innerHTML='<div class="progressbg"></div><div class="progressimg"></div>';
 var progressdivs=progress.getElementsByTagName("div");
 if(isIE) progressdivs[0].style.filter="alpha(opacity=75)";
 else progressdivs[0].style.opacity="0.75";
 progressdivs[0].style.width=progressdivs[1].style.width=maxw+"px";
 progressdivs[0].style.height=progressdivs[1].style.height=maxh+"px";
 target.appendChild(filmstrip);
 target.appendChild(progress);
 var thumbs='<div class="gfilmstripctr"><div>';
 for(var i=0; i<length; i++) {
  if(slides[i].className=="slide") {
   slides[i].style.left="-9999px";
   slides[i].style.top="-9999px";
   var sp=slides[i].getElementsByTagName("span")[0];
   sp.style.display="none";
   var thumburl=sp.innerHTML.replace(/\/([^\/]+)$/, "/slythumb_$1");
   thumbs+='<a href="#" onclick="return '+gname+'.show('+i+');"><img src="'+thumburl+'" alt=""/></a>';
   loaded[i]=0;
  }
 }
 thumbs+="</div></div>";
 filmstrip.innerHTML=thumbs;
 fixThumbs();
 showSlide();
 
 return {
  show : function(n) {
   if(!busy && slides[n]!=current) {
    index=n;
    showSlide();
   }
   return false;
  }
 }
}

