  var picload = new Object();

  function calcBackdropWidth() {
    return Math.max(document.body.offsetWidth,thies.calcPageWidth());
  }

  function calcBackdropHeight() {
    return Math.max(document.body.offsetHeight,thies.calcPageHeight());
  }

  var calcBackdropSize = function() {
    var bd = $('backdrop');
    bd.style.width = calcBackdropWidth()+'px';
    bd.style.height = calcBackdropHeight()+'px';
  }

  var calcPicHolderPosition = function(img) {
    var dl = $('picHolder');
    var h = dl.offsetHeight;
    var w = dl.offsetWidth;
    if(img && img.offsetWidth == 0) {  //ie fix for cached images
      w = 22+img.width;
    }
    if(img && img.offsetHeight == 0) { //ie fix for cached images
      h = h+img.height;
    }
    dl.style.top = (thies.calcPageHeight()/2+thies.calcScrollTop()-h/2)+'px';
    dl.style.left = (thies.calcPageWidth()/2+thies.calcScrollLeft()-w/2)+'px';
  }

  function fadeInBackdrop(bd) {
    bd.style.opacity = 0;
    emile(bd, "opacity:0.9", {
      duration: 500
    });
  }

  function fadeInImgHolder(dl,img,bd,close) {
    dl.style.opacity = 0;
    emile(dl, "opacity:1", {
      duration: 700,
      after: function() {
        close.onclick = function() {
          fadeOutImgHolder(dl);
          fadeOutBackdrop(bd);
          return false;
        }
        close.title = 'Click to Close';
        addCloseClick(img,dl,bd);
      }
    });
  }

  function fadeOutBackdrop(bd) {
    emile(bd, "opacity:0", {
      duration: 500,
      after: function() {
        thies.removeEventSimple(window, "resize", calcBackdropSize);
        thies.removeChild(bd);
      }
    });
  }

  function fadeOutImgHolder(dl) {
    emile(dl, "opacity:0", {
      duration: 500,
      after: function() {
        thies.removeEventSimple(window, "resize", calcPicHolderPosition);
        thies.removeEventSimple(window, "scroll", calcPicHolderPosition);
        thies.removeChild(dl);
      }
    });
  }

  function initBackdrop(bd) {
    calcBackdropSize();
    thies.addEventSimple(window, "resize", calcBackdropSize);
  }

  function addCloseClick(img,dl,bd) {
    thies.addEventSimple(img,"click",function(){
      fadeOutImgHolder(dl);
      fadeOutBackdrop(bd);
    });
  }

  function zoompic(imgfile,description) {
    //backdrop
    var bd = thies.createElement('body','div','backdrop');
    initBackdrop(bd);
    fadeInBackdrop(bd);
    //img holder
    var dl = thies.createElement('body','dl','picHolder');
    var dt = thies.createElement(dl,'dt','picImage');
    var close = thies.createElement(dt,'a','closeButton');
    close.href = '#';
    close.onclick = function() {
      return false;
    }
    close.appendChild(document.createTextNode('Close Viewer '));
    var dd = thies.createElement(dl,'dd','picText');
    dd.appendChild(document.createTextNode(description));
    var imgLoader = new ImageLoader(imgfile);
    //loadevent
    imgLoader.loadEvent = function(url, img){
      calcPicHolderPosition(img);
      thies.addEventSimple(window, "resize", calcPicHolderPosition);
      thies.addEventSimple(window, "scroll", calcPicHolderPosition);
      fadeInImgHolder(dl,img,bd,close);
      //addCloseClick(img,dl,bd);
      //alert(img.offsetWidth);
    }
    //load img
    imgLoader.load();
    var img = imgLoader.getImage();
    img.style.cursor = 'pointer';
    img.title = 'Click to Close';
    dt.appendChild(img);
  }


