   var slide = {
      setup: function(obj) {
         slide.debugarr("namearr", slide.namearr);
         slide.debugarr("sourcearr", slide.sourcearr);
         slide.debugarr("thumbarr", slide.thumbarr);
         slide.debugarr("linkarr", slide.linkarr);

         slide.frame = obj;
         slide.divarr = slide.frame.getElementsByTagName('div');

         for(i=0; i<slide.divarr.length; i++)
            slide.debugit(i+": "+slide.divarr[i].id);

         slide.window = slide.divarr[1];
         slide.loader = slide.divarr[3];
         slide.slider = slide.divarr[2];
         slide.btnsubc = slide.divarr[6];
         slide.btns = slide.divarr[7];

         slide.slider.style.top = "0px";
         slide.btns.style.left = "0px";

         slide.debugit(slide.window.id+", "+slide.loader.id+", "+slide.slider.id+", "+slide.btnsubc.id+", "+slide.btns.id);

         slide.createbtns();

         slide.numofpages = Math.ceil(slide.namearr.length/slide.numperpage);
         slide.btns.style.width = (slide.numofpages * 498)+"px";
         slide.loaded = 0;
         slide.loadedcount = 0;
         slide.jump = 0;
         slide.moving = 0;

         slide.loadedarr = Array();

         slide.slider.onmouseover = function() { if(!slide.moving) { slide.stoptimer(); } };
         slide.slider.onmouseout = function() { if(!slide.moving) { slide.starttimer(); } };

         slide.debugit("numofpages: "+slide.numofpages);
         slide.debugit("numperpage: "+slide.numperpage);

         slide.newimg = slide.pathprefix+slide.baseurl+slide.sourcearr[0];
         slide.newimgobj = null;
         slide.loadfirstimg();
      },

      createbtns: function() {
         for(i=0; i<slide.namearr.length; i++) {
            var btn = document.createElement('div');
            btn.setAttribute('class', 'slidebtn');
            btn.setAttribute('id', 'btn_'+i);
            var link = document.createElement('a');
            link.setAttribute('href', 'javascript:void(slide.to('+i+'))');
            var img = document.createElement('img');
            img.setAttribute('src', slide.pathprefix+slide.baseurl+"thumbs/"+slide.thumbarr[i]);
            img.setAttribute('width', '75');
            img.setAttribute('height', '50');
            img.setAttribute('alt', slide.namearr[i]);
            link.appendChild(img);
            btn.appendChild(link);
            slide.btns.appendChild(btn);
         }
      },

      loadfirstimg: function() {
         slide.debugit("in loadfirstimg");
         slide.loader.style.display = "block";
         if(slide.newimgobj == null) {
            slide.newimgobj = new Image();
            slide.newimgobj.src = slide.pathprefix+slide.baseurl+slide.sourcearr[0];
         }
         slide.debugit(slide.newimgobj.src);
         if(slide.newimgobj.complete) {
            var box = document.createElement('div');
            box.setAttribute('id', 'slide_'+0);
            var link = document.createElement('a');
            link.setAttribute('href', slide.pathprefix+slide.linkarr[0]);
            var img = document.createElement('img');
            img.setAttribute('src', slide.pathprefix+slide.baseurl+slide.sourcearr[0]);
            img.setAttribute('width', '550');
            img.setAttribute('height', '300');
            img.setAttribute('alt', slide.namearr[0]);
            var title = document.createElement('div');
            title.appendChild(document.createTextNode(slide.namearr[0]));
            link.appendChild(img);
            box.appendChild(link);
            box.appendChild(title);
            slide.slider.appendChild(box);

            btn = document.getElementById("btn_0");
            btn = btn.getElementsByTagName("img");
            btn[0].style.borderColor = "#ffffff";

            slide.loader.style.display = "none";

            slide.newimgobj = null;
            slide.currpage = 1;
            slide.currpos = 0;
            slide.loadedcount++;
            slide.loadedarr[0] = 0;
            slide.starttimer();
         }
         else {
            setTimeout("slide.loadfirstimg()", 1000);
         }
      },

      loadnextimg: function() {
         slide.debugit("in loadnextimg");
         slide.loader.style.display = "block";
         if(slide.newimgobj == null) {
            slide.newimgobj = new Image();
            slide.newimgobj.src = slide.pathprefix+slide.baseurl+slide.sourcearr[slide.currpos];
            slide.debugit(slide.sourcearr[slide.currpos]);
         }
         if(slide.newimgobj.complete) {
//          if(!slide.loaded) {
            if(!slide.chkloaded(slide.currpos)) {
               var box = document.createElement('div');
               box.setAttribute('id', 'slide_'+slide.currpos);
               var link = document.createElement('a');
               link.setAttribute('href', slide.pathprefix+slide.linkarr[slide.currpos]);
               var img = document.createElement('img');
               img.setAttribute('src', slide.pathprefix+slide.baseurl+slide.sourcearr[slide.currpos]);
               img.setAttribute('width', '550');
               img.setAttribute('height', '300');
               img.setAttribute('alt', slide.namearr[slide.currpos]);
               var title = document.createElement('div');
               title.appendChild(document.createTextNode(slide.namearr[slide.currpos]));
               link.appendChild(img);
               box.appendChild(link);
               box.appendChild(title);
               slide.slider.appendChild(box);

               slide.loadedcount++;
               slide.loadedarr[slide.loadedarr.length] = slide.currpos;
            }
//          }

            slide.loader.style.display = "none";

            slide.newimgobj = null;

            slide.it();
         }
         else {
            setTimeout("slide.loadnextimg()", 1000);
         }
      },

      chkloaded: function(pos) {
         var slides = slide.slider.getElementsByTagName('div');
         for(i=0; i<slides.length; i++) {
            if(slides[i].id == "slide_"+pos)
               return true;
         }
         return false;
      },

      clearslider: function() {
         slide.slider.innerHTML = "";
         slide.slider.style.top = "0px";
      },

      starttimer: function() {
         slide.stoptimer();
         slide.debugit("starttimer");
         slide.timer = setInterval("slide.counter()", 1000);
      },

      stoptimer: function() {
         slide.debugit("stoptimer");
         clearInterval(slide.timer);
         slide.timer = null;
      },

      to: function(pos) {
         slide.stoptimer();
         slide.prevpos = slide.currpos;
         slide.currpos = pos;
         slide.count = 0;
         slide.loadnextimg();
      },

      it: function() {
         slide.debugit("in slideit");
         var slideypos = (slide.loadedcount-2) * slide.slideheight * -1;
//       var newypos = (slide.loadedcount-1) * slide.slideheight * -1;
         var newypos = document.getElementById("slide_"+slide.currpos).offsetTop * -1;

         slide.debugit("loadedcount: "+slide.loadedcount+", length: "+slide.namearr.length+", loaded: "+slide.loaded);

//       if(slide.loadedcount > slide.namearr.length) {
//          slide.loadedcount = 1;
//          newypos = 300;
//       }

         var currypos = parseInt(slide.slider.style.top);
         var ypos = ((currypos - newypos) * -1)/3;
         if(ypos < 0)
            ypos = Math.floor(ypos);
         else
            ypos = Math.ceil(ypos);

         slide.debugit("slideypos: "+slideypos+", newypos: "+newypos+", currypos: "+currypos+", ypos: "+ypos);

         slide.slider.style.top = (currypos+ypos)+"px";
         if(newypos != currypos) {
            if(slide.timer == null) {
               slide.moving = 1;
               slide.timer = setInterval("slide.it()", 50);
            }
         }
         else {
            var btn = document.getElementById("btn_"+slide.prevpos);
            btn = btn.getElementsByTagName("img");
            btn[0].style.borderColor = "#000000";

            btn = document.getElementById("btn_"+slide.currpos);
            btn = btn.getElementsByTagName("img");
            btn[0].style.borderColor = "#ffffff";

            slide.stoptimer();
            slide.moving = 0;

//            if(slide.jump) {
//               slide.delay = slide.defaultdelay;
//               slide.jump = 0;
//            }

            slide.starttimer();
         }
      },

      count: 0,

      counter: function() {
         slide.debugit("counter");
         if(++slide.count >= slide.delay) {
            slide.stoptimer();
            slide.prevpos = slide.currpos;
            slide.currpos++;
            if(slide.currpos >= slide.namearr.length) {
               slide.currpos = 0;
               slide.loaded = 1;
               slide.cleardebug();
               slide.debugarr("loadedarr", slide.loadedarr);
            }
            slide.loadnextimg();
            slide.count = 0;
         }
      },

      scrollleft: function() {
         if(slide.currpage == 1)
            return;
         else
            slide.targetpage = slide.currpage-1;
         slide.debugit("targetpage: "+slide.targetpage);
         slide.scrollnow();
      },

      scrollright: function() {
         if(slide.currpage == slide.numofpages)
            slide.targetpage = 1;
         else
            slide.targetpage = slide.currpage+1;
         slide.debugit("targetpage: "+slide.targetpage);
         slide.scrollnow();
      },

      scrollnow: function() {
         var currxpos = parseInt(slide.btns.style.left);
         if(slide.targetpage == 1)
            var newxpos = 0;
         else
            var newxpos = ((slide.targetpage-1) * slide.btnsubc.clientWidth) * -1;
         slide.debugit("currxpos: "+currxpos+", newxpos: "+newxpos);

         var xpos = ((currxpos - newxpos) * -1)/3;
         if(xpos < 0)
            xpos = Math.floor(xpos);
         else
            xpos = Math.ceil(xpos);

         slide.debugit("xpos: "+xpos);
         slide.debugit("new left: "+(currxpos+xpos));
         slide.btns.style.left = (currxpos+xpos)+"px";
         currxpos = parseInt(slide.btns.style.left);
         slide.debugit("currxpos is now: "+currxpos);

         if(currxpos < newxpos || currxpos > newxpos) {
            setTimeout("slide.scrollnow()", 50);
         }
         else {
            slide.debugit("END");
            slide.currpage = slide.targetpage;
         }
      },

      cleardebug: function() {
         document.getElementById("debugbox").innerHTML = "";
      },

      debug: 0,

      debugarr: function(name, arr) {
         if(!slide.debug)
            return;
         document.getElementById("debugbox").innerHTML += name+":<br />";
         for(i=0; i<arr.length; i++)
            document.getElementById("debugbox").innerHTML += "["+i+"] => "+arr[i]+"<br />";
      },

      debugit: function(msg) {
         if(!slide.debug)
            return;
         document.getElementById("debugbox").innerHTML += msg+"<br />";
      }
   };
