   var mg = {
      obj: null,

      setup: function(obj) {
         mg.divarr = obj.getElementsByTagName("div");
         mg.debugit("divs under content: "+mg.divarr.length);

         mg.galleries = new Array();
         for(i=0; i<mg.divarr.length; i++) {
            if(mg.divarr[i].className == "mgallery") {
               mg.galleries[mg.galleries.length] = mg.divarr[i];
            }
         }

         mg.debugit("number of mgalleries: "+mg.galleries.length);

         for(i=0; i<mg.galleries.length; i++) {
            var divarr = mg.galleries[i].getElementsByTagName("div");
            var linkarr = mg.galleries[i].getElementsByTagName("a");
            var spans = new Array();

            for(j=0; j<divarr.length; j++) {
               if(divarr[j].className == "mgbtns") {
                  mg.debugit("mgbtns found");
                  var btns = divarr[j].getElementsByTagName("a");
                  mg.debugit("number of btns: "+btns.length);
                  divarr[j].style.width = (btns.length*(btns[0].clientWidth+14))+"px";
                  divarr[j].id = "mgbtns-"+divarr[j].clientWidth;
                  for(k=0; k<btns.length; k++) {
                     btns[k].href = "javascript:void('"+btns[k].href+"')";
//                     btns[k].href = "#";
                     btns[k].onmouseup = mg.chgimg;
                  }
                  var spanarr = divarr[j].getElementsByTagName("span");

                  for(k=0; k<spanarr.length; k++) {
                     if(spanarr[k].className == "mgcaption")
                        spans[spans.length] = spanarr[k];
                  }
               }
            }
            if(linkarr[0].href.match(/aardvark_leadingimage.jpg/) != null)
               divarr[3].innerHTML = "No previews available.";

            linkarr[0].href = "javascript:void(gallery.popup('"+linkarr[0].href+"', '"+spans[0].innerHTML+"'))";
            linkarr[1].onmouseup = mg.prev;
            linkarr[2].onmouseup = mg.next;

            linkarr[1].onmouseover = mg.prevlightup;
            linkarr[1].onmouseout = mg.prevlightout;

            linkarr[2].onmouseover = mg.nextlightup;
            linkarr[2].onmouseout = mg.nextlightout;

            linkarr[3].onmouseup = mg.slideright;
            linkarr[3].href = "javascript:void('')";
            linkarr[linkarr.length-1].onmouseup = mg.slideleft;
            linkarr[linkarr.length-1].href = "javascript:void('')";

            if(btns.length == 1) {
               linkarr[1].parentNode.style.display = "none";
               linkarr[2].parentNode.style.display = "none";
               if(divarr[3].innerHTML != "No previews available.")
                  divarr[3].innerHTML = "Click image to enlarge.";
               divarr[4].style.display = "none";
               mg.galleries[i].style.height = "238px";
            }
            else if(btns.length > 1) {
               linkarr[1].parentNode.style.display = "block";
               linkarr[2].parentNode.style.display = "block";
               if(divarr[3].innerHTML != "No previews available.")
                  divarr[3].innerHTML = "Click arrows for more samples. Click image to enlarge.";
               divarr[4].style.display = "block";
               mg.galleries[i].style.height = "323px";
            }
         }

         mg.lock = 0;
      },

      getgallery: function(e) {
         // get gallery id and image id if available
         var idname = mg.getid(e);
         document.getElementById(idname).parentNode.blur();
         mg.debugit("passed idname: "+idname);
         mg.gallery = idname.split("-");
         if(mg.gallery.length == 3) {
            mg.galleryimg = mg.gallery[2];
         }
         mg.gallery = mg.gallery[1];

         // get divs under target gallery
         var div = document.getElementById("mgallery-"+mg.gallery);
         mg.gallerydivarr = div.getElementsByTagName("div");

         // get links under target gallery
         mg.linksarr = div.getElementsByTagName("a");

         // get current image
         var currimg = mg.linksarr[0];

         // get links in btn container
         var linkarr = mg.gallerydivarr[6].getElementsByTagName("a");

         // get spans in btn container
         var spanarr = mg.gallerydivarr[6].getElementsByTagName("span");
         mg.leadingimgarr = new Array();
         mg.captionarr = new Array();
         for(i=0; i<spanarr.length; i++) {
            if(spanarr[i].className == "mgleadingimage")
               mg.leadingimgarr[mg.leadingimgarr.length] = spanarr[i].innerHTML;
            else
               mg.captionarr[mg.captionarr.length] = spanarr[i].innerHTML;
         }

         // get image ids in btn container
         mg.linkidarr = new Array();
         mg.imgarr = new Array();

         for(i=0; i<linkarr.length; i++) {
            idname = linkarr[i].id.split("-");
            mg.linkidarr[mg.linkidarr.length] = idname[2];
            mg.imgarr[mg.imgarr.length] = linkarr[i].href;
         }

         // using current image id, get its position
         idname = currimg.id.split("-");
         mg.currimgid = idname[2];

         for(i=0; i<mg.linkidarr.length; i++) {
            if(mg.currimgid == mg.linkidarr[i]) {
               mg.imgpos = i;
               break;
            }
         }

         // get width of each btn
         mg.btnwidth = linkarr[0].clientWidth + 8;

         // get numperpage
         mg.numperpage = 5;

         // get numofpages
         var btncontainer = mg.gallerydivarr[8];
         var btns = mg.gallerydivarr[7];
         mg.numofpages = Math.ceil(btns.clientWidth / (btncontainer.clientWidth*mg.numperpage));
         mg.numofpages = Math.ceil(btns.clientWidth / ((mg.btnwidth+6)*mg.numperpage));

         // get page position
         mg.currpage = Math.round((btns.offsetLeft*-1) / btns.clientWidth);
         mg.currpage = Math.round( (btns.offsetLeft*-1) / ((mg.btnwidth+6)*mg.numperpage) );

         mg.cleardebug();

         mg.debugit(btns.clientWidth+" "+((mg.btnwidth+6)*mg.numperpage));

         mg.debugit("gallery id: "+mg.gallery);
         mg.debugit("gallery item id: "+mg.galleryimg);
         mg.debugit(mg.gallerydivarr);
         mg.debugit(mg.linksarr);
         mg.debugit(mg.leadingimgarr);
         mg.debugit(mg.captionarr);
         mg.debugit(mg.linkidarr);
         mg.debugit(mg.imgarr);
         mg.debugit("current img id: "+mg.currimgid);
         mg.debugit("img pos: "+mg.imgpos);
         mg.debugit("btn width: "+mg.btnwidth);
         mg.debugit("num per page: "+mg.numperpage);
         mg.debugit("num of pages: "+mg.numofpages);
         mg.debugit("currpage: "+mg.currpage);
      },

      prev: function(e) {
         mg.getgallery(e);

         if(mg.imgpos == 0) {
            mg.targetimg = mg.imgarr[mg.imgarr.length-1];
            mg.galleryimg = mg.linkidarr[mg.imgarr.length-1];
            mg.leadingimg = mg.leadingimgarr[mg.imgarr.length-1];
            mg.caption = mg.captionarr[mg.imgarr.length-1];
         }
         else {
            mg.targetimg = mg.imgarr[mg.imgpos-1];
            mg.galleryimg = mg.linkidarr[mg.imgpos-1];
            mg.leadingimg = mg.leadingimgarr[mg.imgpos-1];
            mg.caption = mg.captionarr[mg.imgpos-1];
         }

         mg.targetimg = mg.targetimg.replace("javascript:void('", "");
         mg.targetimg = mg.targetimg.replace("')", "");

         mg.gallerydivarr[0].innerHTML = "<img src=\""+mg.pathprefix+"ajax-loader-black.gif\" class=\"loader\" />";
         mg.loadimg();
      },

      next: function(e) {
         mg.getgallery(e);

         if(mg.imgpos == (mg.imgarr.length-1)) {
            mg.targetimg = mg.imgarr[0];
            mg.galleryimg = mg.linkidarr[0];
            mg.leadingimg = mg.leadingimgarr[0];
            mg.caption = mg.captionarr[0];
         }
         else {
            mg.targetimg = mg.imgarr[mg.imgpos+1];
            mg.galleryimg = mg.linkidarr[mg.imgpos+1];
            mg.leadingimg = mg.leadingimgarr[mg.imgpos+1];
            mg.caption = mg.captionarr[mg.imgpos+1];
         }

         mg.targetimg = mg.targetimg.replace("javascript:void('", "");
         mg.targetimg = mg.targetimg.replace("')", "");

         mg.gallerydivarr[0].innerHTML = "<img src=\""+mg.pathprefix+"ajax-loader-black.gif\" class=\"loader\" />";
         mg.loadimg();
      },

      slideleft: function(e) {
         mg.debugit("slideleft");
         mg.getgallery(e);

         if(mg.lock)
            return;
         else {
            mg.gallerydivarr[7].style.left = mg.gallerydivarr[7].offsetLeft+"px";
            mg.targetpos = mg.gallerydivarr[7].offsetLeft - (mg.btnwidth * mg.numperpage);
            mg.pos = mg.btnwidth * mg.numperpage;
            if((mg.currpage+1) == mg.numofpages) {
               mg.targetpos = 0;
               mg.pos *= mg.numofpages-1;
               mg.currpage = 0;
               mg.lock = 1;
               mg.timer = setInterval("mg.sliderightnow()", 50);
               return;
            }
            mg.currpage++;
            mg.lock = 1;
            mg.timer = setInterval("mg.slideleftnow()", 50);
         }
      },

      slideright: function(e) {
         mg.debugit("slideright");
         mg.getgallery(e);

         if(mg.lock)
            return;
         else {
            mg.gallerydivarr[7].style.left = mg.gallerydivarr[7].offsetLeft+"px";
            mg.targetpos = mg.gallerydivarr[7].offsetLeft + (mg.btnwidth * mg.numperpage);
            mg.pos = mg.btnwidth * mg.numperpage;
            if(parseInt(mg.gallerydivarr[7].style.left) == 0) {
               return;
            }
            mg.currpage--;
            mg.lock = 1;
            mg.timer = setInterval("mg.sliderightnow()", 50);
         }
      },

      slideleftnow: function() {
         mg.debugit("slideleftnow");
         mg.pos = Math.ceil(mg.pos/2);
         mg.debugit(mg.pos);
         mg.newpos = parseInt(mg.gallerydivarr[7].style.left) - mg.pos;
         mg.gallerydivarr[7].style.left = mg.newpos+"px";
         if(parseInt(mg.gallerydivarr[7].style.left) <= mg.targetpos) {
            mg.gallerydivarr[7].style.left = mg.targetpos+"px";
            clearInterval(mg.timer);
            mg.lock = 0;
         }
      },

      sliderightnow: function() {
         mg.debugit("sliderightnow");
         mg.pos = Math.ceil(mg.pos/2);
         mg.debugit(mg.pos);
         mg.newpos = parseInt(mg.gallerydivarr[7].style.left) + mg.pos;
         mg.gallerydivarr[7].style.left = mg.newpos+"px";
         if(parseInt(mg.gallerydivarr[7].style.left) >= mg.targetpos) {
            mg.gallerydivarr[7].style.left = mg.targetpos+"px";
            clearInterval(mg.timer);
            mg.pos = 0;
            mg.lock = 0;
         }
      },

      chgimg: function(e) {
         mg.getgallery(e);

         var link = document.getElementById("mglink-"+mg.gallery+"-"+mg.galleryimg);
         mg.debugit(link.href);
         var img = link.href.replace("javascript:void('", "");
         img = img.replace("')", "");
         mg.debugit(img);
         mg.targetimg = img;

         for(i=0; i<mg.linkidarr.length; i++) {
             if(mg.galleryimg == mg.linkidarr[i]) {
                mg.leadingimg = mg.leadingimgarr[i];
                mg.caption = mg.captionarr[i];
                break;
             }
         }

         mg.gallerydivarr[0].innerHTML = "<img src=\""+mg.pathprefix+"ajax-loader-black.gif\" class=\"loader\" />";
         mg.loadimg();
      },

      loadimg: function() {
         var img = new Image();
         img.src = mg.leadingimg;
         if(img.complete) {
           if(mg.gallerydivarr[0].clientWidth > img.width || mg.gallerydivarr[0].clientWidth < img.width) {
               var newwidth = mg.gallerydivarr[0].clientWidth;
               var newheight = Math.round((newwidth*img.height)/img.width);
            }
            else {
               var newwidth = img.width;
               var newheight = img.height;
            }

            mg.gallerydivarr[0].innerHTML = "      <a href=\"javascript:void(gallery.popup('"+mg.targetimg+"', '"+mg.caption+"'))\" id=\"mgimglink-"+mg.gallery+"-"+mg.galleryimg+"\"><img src=\""+mg.leadingimg+"\" width=\""+newwidth+"\" height=\""+newheight+"\" id=\"mgimg-"+mg.gallery+"-"+mg.galleryimg+"\" /></a>";
         }
         else
            setTimeout("mg.loadimg()", 1000);
      },

      prevlightup: function(e) {
         var idname = mg.getid(e);
         var img = document.getElementById(idname);
         img.src = mg.pathprefix+"mgprevbtno.gif";
      },

      prevlightout: function(e) {
         var idname = mg.getid(e);
         var img = document.getElementById(idname);
         img.src = mg.pathprefix+"mgprevbtn.gif";
      },

      nextlightup: function(e) {
         var idname = mg.getid(e);
         var img = document.getElementById(idname);
         img.src = mg.pathprefix+"mgnextbtno.gif";
      },

      nextlightout: function(e) {
         var idname = mg.getid(e);
         var img = document.getElementById(idname);
         img.src = mg.pathprefix+"mgnextbtn.gif";
      },

      getid: function(e) {
         var idname = "";
         if(!e)
            if(window.event)
               e = window.event;
            else
               return;
         if(document.layers)
            idname = e.target.id;
         else if(window.event && window.event.srcElement)
            idname = window.event.srcElement.id;
         else if(e && e.stopPropagation && !window.opera)
            if(e.target.nodeType == 1)
               idname = e.target.id;
            else
               if(e.target.parentNode != null)
                  idname = e.target.parentNode.id;
         else if (window.opera && e)
            idname = e.target.id;

         return idname;
      },

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

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

   var gallery = {
      setup: function() {
//         gallery.galleries = new Array();
//         var divarr = obj.getElementsByTagName("div");

//         for(i=0; i<divarr.length; i++) {
//            if(divarr[i].className == "gallery")
//               gallery.galleries[gallery.galleries.length] = divarr[i];
//         }

//         gallery.debugit(gallery.galleries.length);

//         for(i=0; i<gallery.galleries.length; i++) {
//            divarr = gallery.galleries[i].getElementsByTagName("div");
//            gallery.debugit(divarr.length);
//            for(j=0; j<divarr.length; j++) {
//               if(divarr[j].className == "imagecontainer") {
//                  gallery.debugit(divarr[j].childNodes[0].href);
//                  divarr[j].childNodes[0].href = "javascript:void(gallery.popup('"+divarr[j].childNodes[0].href+"'))";
//               }
//            }
//         }

         gallery.state = 0;
         gallery.frame = document.getElementById("imgframe");
         gallery.box = document.getElementById("imgbox");
         gallery.loading = document.getElementById("loading");
         gallery.frame.style.display = "none";
      },

      popup: function(img, caption) {
         gallery.debugit("in popup");

         var pagewidth = document.documentElement.clientWidth;
         var pageheight = document.documentElement.clientHeight;

         if(img != undefined) {
            gallery.closeit();
         }

         switch(gallery.state) {
            case 0:
               var regex = /^\S*.[jpg|gif|png]$/gi;
               var results = img.match(regex);
               if(results == null) {
                  location = img;
                  return;
               }
               gallery.imgobj = new Image();
               gallery.imgobj.src = img;
               if(gallery.imgobj.complete)
                  gallery.state = 2;
               else
                  gallery.state = 1;

               var topspace = document.documentElement.scrollTop>document.body.scrollTop?document.documentElement.scrollTop:document.body.scrollTop;
               gallery.frame.style.top = (Math.round((pageheight-72)/2)+(topspace))+"px";
               gallery.frame.style.left = Math.round((pagewidth-72)/2)+"px";
               gallery.frame.style.display = "block";

               gallery.caption = caption;

               setTimeout("gallery.popup()", 1000);
               break;
            case 1:
               gallery.debugit("loading");
               if(gallery.imgobj.complete)
                  gallery.state = 2;
               setTimeout("gallery.popup()", 1000);
               break;
            case 2:
               gallery.debugit("original size: "+gallery.imgobj.width+" x "+gallery.imgobj.height);
               if(gallery.imgobj.width == 0 && gallery.imgobj.height == 0)
                  return;

               gallery.debugit("page size: "+pagewidth+" "+pageheight);
               if(pagewidth >= gallery.imgobj.width) {
                  var newwidth = gallery.imgobj.width;
               }
               else {
                  var newwidth = pagewidth-150;
                  var newheight = Math.round(((pagewidth-150)*gallery.imgobj.height)/gallery.imgobj.width);
               }
               if(pageheight >= gallery.imgobj.height) {
                  var newheight = gallery.imgobj.height;
               }
               else {
                  var newheight = pageheight-150;
                  var newwidth = Math.round(((pageheight-150)*gallery.imgobj.width)/gallery.imgobj.height);
               }
               gallery.debugit("new size: "+newwidth+" "+newheight);
               gallery.newwidth = newwidth;
               gallery.newheight = newheight;

               gallery.state = 3;
//               gallery.frame.style.top = "0px";
//               gallery.frame.style.left = "0px";
               gallery.frame.style.width = "72px";
               gallery.frame.style.height = "72px";

               gallery.box.style.width = "52px";
               gallery.box.style.height = "52px";

               gallery.loading.style.top = "0px";

//gallery.box.onmouseup = function() { clearInterval(gallery.timer); };

//               slide.stopslide();
//               praise.pause();

               gallery.timer = setInterval("gallery.expandbox()", 50);
               break;
            case 3:
               var img = document.createElement("img");
               img.setAttribute("src", gallery.imgobj.src);
               img.setAttribute("width", (gallery.newwidth));
               img.setAttribute("height", (gallery.newheight));
               gallery.box.appendChild(img);

               if(gallery.caption != "") {
                  var caption = document.createElement("div");
                  caption.setAttribute("id", "caption");
                  caption.appendChild(document.createTextNode(gallery.caption));
                  gallery.box.appendChild(caption);
//                  document.getElementById("caption").style.top = (gallery.newheight-20)+"px";
//                  document.getElementById("caption").style.left = "13px";
               }

               var xbox = document.createElement("div");
               xbox.setAttribute("id", "xbox");
               var x = document.createElement("a");
               x.setAttribute("href", "javascript:void(gallery.closeit())");
               x.appendChild(document.createTextNode("X"));
               xbox.appendChild(x);
               gallery.box.appendChild(xbox);

               xbox = document.getElementById("xbox");
               xbox.style.left = (gallery.newwidth - 8)+"px";

//               slide.startslide();
//               praise.resume();

               break;
         }

         
      },

      closeit: function() {
         clearInterval(gallery.timer);
         gallery.timer = null;
         gallery.box.innerHTML = "<img src=\""+mg.pathprefix+"ajax-loader-white.gif\" width=\"32\" height=\"32\" alt=\"loading\" id=\"loading\" />";
         gallery.loading = document.getElementById("loading");
         gallery.state = 0;
         gallery.imgobj = null;
         gallery.frame.style.display = "none";

         gallery.frame.style.top = "0px";
         gallery.frame.style.left = "0px";
         gallery.frame.style.width = "52px";
         gallery.frame.style.height = "52px";

         gallery.box.style.width = "32px";
         gallery.box.style.height = "32px";

         gallery.loading.style.top = "10px";
         gallery.loading.style.left = "10px";
      },

      expandbox: function() {
         var pagewidth = document.documentElement.clientWidth;
         var pageheight = document.documentElement.clientHeight;

         var toppos = parseInt(gallery.box.style.top);
         var leftpos = parseInt(gallery.box.style.left);
         var widthpos = parseInt(gallery.box.style.width);
         var heightpos = parseInt(gallery.box.style.height);

         var twidth = Math.ceil((gallery.newwidth-widthpos)/2);
         var theight = Math.ceil((gallery.newheight-heightpos)/2);

         if(widthpos < (gallery.newwidth))
            if((twidth+widthpos) > (gallery.newwidth)) {
               gallery.box.style.width = (gallery.newwidth)+"px";
               gallery.frame.style.width = (gallery.newwidth+20)+"px";
            }
            else {
               gallery.box.style.width = (twidth+widthpos)+"px";
               gallery.frame.style.width = (twidth+widthpos+20)+"px";
            }
         if(heightpos < (gallery.newheight))
            if((theight+heightpos) > (gallery.newheight)) {
               gallery.box.style.height = (gallery.newheight)+"px";
               gallery.frame.style.height = (gallery.newheight+20)+"px";
            }
            else {
               gallery.box.style.height = (theight+heightpos)+"px";
               gallery.frame.style.height = (theight+heightpos+20)+"px";
            }

         toppos = parseInt(gallery.box.style.top);
         leftpos = parseInt(gallery.box.style.left);
         widthpos = parseInt(gallery.box.style.width);
         heightpos = parseInt(gallery.box.style.height);

var topspace = document.documentElement.scrollTop>document.body.scrollTop?document.documentElement.scrollTop:document.body.scrollTop;
var leftspace = document.documentElement.scrollLeft>document.body.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft;
         gallery.frame.style.top = (Math.round((pageheight-(heightpos+20))/2)+topspace)+"px";
         gallery.frame.style.left = (Math.round((pagewidth-(widthpos+20))/2)+leftspace)+"px";
         gallery.loading.style.top = Math.round((heightpos-32)/2)+"px";
         gallery.loading.style.left = Math.round((widthpos-32)/2)+"px";

         var done = 1;
         if(widthpos < (gallery.newwidth))
            done = 0;
         if(heightpos < (gallery.newheight))
            done = 0;

         if(done == 1) {
            clearInterval(gallery.timer);
            gallery.timer = null;
            gallery.popup();
         }
      },

      getid: function(e) {
         var idname = "";
         if(!e)
            if(window.event)
               e = window.event;
            else
               return;
         if(document.layers)
            idname = e.target.id;
         else if(window.event && window.event.srcElement)
            idname = window.event.srcElement.id;
         else if(e && e.stopPropagation && !window.opera)
            if(e.target.nodeType == 1)
               idname = e.target.id;
            else
               if(e.target.parentNode != null)
                  idname = e.target.parentNode.id;
         else if (window.opera && e)
            idname = e.target.id;

         return idname;
      },

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

   gallery.setup();