var uZoom_UserAgent = 'msie';

var userAgentLine = navigator.userAgent.toLowerCase();

if (userAgentLine.indexOf("opera") != -1)
{
  uZoom_UserAgent = 'opera'
}
else
if (userAgentLine.indexOf("msie") != -1)
{
  uZoom_UserAgent = 'msie'
}
else
if (userAgentLine.indexOf("safari") != -1)
{
  uZoom_UserAgent = 'safari'
}
else
if (userAgentLine.indexOf("mozilla") != -1)
{
  uZoom_UserAgent = 'gecko'
}



var uZoomObjects = new Array();



function uZoom_$(id)
{
  return document.getElementById(id)
};



function uZoom_getStyle(el, styleProp)
{
  if (el.currentStyle)
  {
    var y = el.currentStyle[styleProp];
    y = parseInt(y) ? y: '0px'
  }
  else
  if (window.getComputedStyle)
  {
    var css = document.defaultView.getComputedStyle(el, null);
    var y = css ? css[styleProp] : null
  }
  
  return y
};



function uZoom_getBounds(e)
{
  if (e.getBoundingClientRect)
  {
    var r = e.getBoundingClientRect();
    var wx = 0;
    var wy = 0;
    
    if (document.body && (document.body.scrollLeft || document.body.scrollTop))
    {
      wy = document.body.scrollTop;
      wx = document.body.scrollLeft
    }
    else
    if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop))
    {
      wy = document.documentElement.scrollTop;
      wx = document.documentElement.scrollLeft
    }
    
    return {
      'left': r.left + wx,
      'top': r.top + wy,
      'right': r.right + wx,
      'bottom': r.bottom + wy
    }
  }
}



function uZoom_getEventBounds(e)
{
  var x = 0;
  var y = 0;
  
  if (uZoom_UserAgent == 'msie')
  {
    y = e.clientY;
    x = e.clientX;
    
    if (document.body && (document.body.scrollLeft || document.body.scrollTop))
    {
      y = e.clientY + document.body.scrollTop;
      x = e.clientX + document.body.scrollLeft
    }
    else
    if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop))
    {
      y = e.clientY + document.documentElement.scrollTop;
      x = e.clientX + document.documentElement.scrollLeft
    }
  }
  else
  {
    y = e.clientY;
    x = e.clientX;
    y += window.pageYOffset;
    x += window.pageXOffset
  }
  
  return {
    'x': x,
    'y': y
  }
}



function mView_ia()
{
  return false
};



var uZoom_extendElement = function()
{
  var args = arguments;
  if (!args[1]) args = [this, args[0]];
  for (var property in args[1]) args[0][property] = args[1][property];
  return args[0]
};



function uZoom_addEventListener(obj, event, listener)
{
  if (uZoom_UserAgent == 'gecko' || uZoom_UserAgent == 'opera' || uZoom_UserAgent == 'safari')
  {
    try
    {
      obj.addEventListener(event, listener, false)
    }
    catch(e) {}
  }
  else
  if (uZoom_UserAgent == 'msie')
  {
    obj.attachEvent("on" + event, listener)
  }
};



function uZoom_removeEventListener(obj, event, listener)
{
  if (uZoom_UserAgent == 'gecko' || uZoom_UserAgent == 'opera' || uZoom_UserAgent == 'safari')
  {
    obj.removeEventListener(event, listener, false)
  }
  else
  if (uZoom_UserAgent == 'msie')
  {
    obj.detachEvent("on" + event, listener)
  }
};



function uZoom_concat()
{
  var result = [];
  for (var i = 0; i < arguments.length; i++) for (var j = 0; j < arguments[i].length; j++) result.push(arguments[i][j]);
  return result
};



function uZoom_withoutFirst(sequence, skip)
{
  result = [];
  for (var i = skip; i < sequence.length; i++) result.push(sequence[i]);
  return result
};



function uZoom_createMethodReference(object, methodName)
{
  var args = uZoom_withoutFirst(arguments, 2);
  return function() {
    object[methodName].apply(object, uZoom_concat(args, arguments))
  }
};



function uZoom_stopEventPropagation(e)
{
  if (uZoom_UserAgent == 'gecko' || uZoom_UserAgent == 'safari' || uZoom_UserAgent == 'opera')
  {
    e.cancelBubble = true;
    e.preventDefault();
    e.stopPropagation()
  }
  else
  if (uZoom_UserAgent == 'msie')
  {
    window.event.cancelBubble = true
  }
};



function uZoom(smallImageContId, smallImageId, bigImageContId, bigImageId, settings)
{
  this.version = '0.1';
  this.recalculating = false;
  this.smallImageCont = uZoom_$(smallImageContId);
  this.smallImage = uZoom_$(smallImageId);
  this.bigImageCont = uZoom_$(bigImageContId);
  this.bigImage = uZoom_$(bigImageId);
  this.pup = 0;
  this.settings = settings;
  
  if (!this.settings["header"])
  {
    this.settings["header"] = ""
  }
  
  this.bigImageSizeX = 0;
  this.bigImageSizeY = 0;
  this.smallImageSizeX = 0;
  this.smallImageSizeY = 0;
  this.popupSizeX = 20;
  this.popupSizey = 20;
  this.positionX = 0;
  this.positionY = 0;
  this.bigImageContStyleTop = '';
  this.loadingCont = null;
  
  if (this.settings["loadingImg"] != '')
  {
    this.loadingCont = document.createElement('DIV');
    this.loadingCont.style.position = 'absolute';
    this.loadingCont.style.visibility = 'hidden';
    this.loadingCont.className = 'uZoomLoading';
    /*this.loadingCont.style.display = 'block';*/
    this.loadingCont.style.display = 'none';
    this.loadingCont.style.textAlign = 'center';
    this.loadingCont.innerHTML = this.settings["loadingText"] + '<br/><img border="0" alt="' + this.settings["loadingText"] + '" src="' + this.settings["loadingImg"] + '"/>';
    this.smallImageCont.appendChild(this.loadingCont)
  }
  
  this.baseuri = '';
  this.safariOnLoadStarted = false;
  
  uZoomObjects.push(this);
  
  this.checkcoords_ref = uZoom_createMethodReference(this, "checkcoords");
  this.mousemove_ref = uZoom_createMethodReference(this, "mousemove")
};



uZoom.prototype.stopZoom = function()
{
  uZoom_removeEventListener(window.document, "mousemove", this.checkcoords_ref);
  uZoom_removeEventListener(this.smallImageCont, "mousemove", this.mousemove_ref);
  
  if (this.settings["position"] == "custom")
  {
    uZoom_$(this.smallImageCont.id + "-big").removeChild(this.bigImageCont)
  }
  else
  {
    this.smallImageCont.removeChild(this.bigImageCont)
  }
  this.smallImageCont.removeChild(this.pup)
};



uZoom.prototype.checkcoords = function(e)
{
  var r = uZoom_getEventBounds(e);
  var x = r['x'];
  var y = r['y'];
  var smallY = 0;
  var smallX = 0;
  var tag = this.smallImage;

  while (tag && tag.tagName != "BODY" && tag.tagName != "HTML")
  {
    smallY += tag.offsetTop;
    smallX += tag.offsetLeft;
    tag = tag.offsetParent
  }
  
  if (uZoom_UserAgent == 'msie')
  {
    var r = uZoom_getBounds(this.smallImage);
    smallX = r['left'];
    smallY = r['top']
  }
  
  smallX += parseInt(uZoom_getStyle(this.smallImage, 'borderLeftWidth'));
  smallY += parseInt(uZoom_getStyle(this.smallImage, 'borderTopWidth'));
  
  if (uZoom_UserAgent != 'msie' || !(document.compatMode && 'backcompat' == document.compatMode.toLowerCase()))
  {
    smallX += parseInt(uZoom_getStyle(this.smallImage, 'paddingLeft'));
    smallY += parseInt(uZoom_getStyle(this.smallImage, 'paddingTop'))
  }
  
  if (x > parseInt(smallX + this.smallImageSizeX))
  {
    this.hiderect();
    return false
  }
  
  if (x < parseInt(smallX))
  {
    this.hiderect();
    return false
  }
  
  if (y > parseInt(smallY + this.smallImageSizeY))
  {
    this.hiderect();
    return false
  }
  
  if (y < parseInt(smallY))
  {
    this.hiderect();
    return false
  }
  
  if (uZoom_UserAgent == 'msie')
  {
    this.smallImageCont.style.zIndex = 1
  }
  return true
};



uZoom.prototype.mousedown = function(e)
{
  uZoom_stopEventPropagation(e);
  this.smallImageCont.style.cursor = 'move'
};



uZoom.prototype.mouseup = function(e)
{
  uZoom_stopEventPropagation(e);
  this.smallImageCont.style.cursor = 'default'
};



uZoom.prototype.mousemove = function(e)
{
  uZoom_stopEventPropagation(e);
  
  for (i = 0; i < uZoomObjects.length; i++)
  {
    if (uZoomObjects[i] != this) {
      uZoomObjects[i].checkcoords(e)
    }
  }
  
  if (this.settings && this.settings["drag_mode"] == true)
  {
    if (this.smallImageCont.style.cursor != 'move') {
      return
    }
  }
  
  if (this.recalculating) {
    return
  }
  
  if (!this.checkcoords(e)) {
    return
  }
  
  this.recalculating = true;
  var smallImg = this.smallImage;
  var smallX = 0;
  var smallY = 0;
  
  if (uZoom_UserAgent == 'gecko' || uZoom_UserAgent == 'opera' || uZoom_UserAgent == 'safari')
  {
    var tag = smallImg;
    while (tag.tagName != "BODY" && tag.tagName != "HTML")
    {
      smallY += tag.offsetTop;
      smallX += tag.offsetLeft;
      tag = tag.offsetParent
    }
  }
  else
  {
    var r = uZoom_getBounds(this.smallImage);
    smallX = r['left'];
    smallY = r['top']
  }
  
  smallX += parseInt(uZoom_getStyle(this.smallImage, 'borderLeftWidth'));
  smallY += parseInt(uZoom_getStyle(this.smallImage, 'borderTopWidth'));
  
  if (uZoom_UserAgent != 'msie' || !(document.compatMode && 'backcompat' == document.compatMode.toLowerCase()))
  {
    smallX += parseInt(uZoom_getStyle(this.smallImage, 'paddingLeft'));
    smallY += parseInt(uZoom_getStyle(this.smallImage, 'paddingTop'))
  }
  
  var r = uZoom_getEventBounds(e);
  var x = r['x'];
  var y = r['y'];
  this.positionX = x - smallX;
  this.positionY = y - smallY;
  
  if ((this.positionX + this.popupSizeX / 2) >= this.smallImageSizeX)
  {
    this.positionX = this.smallImageSizeX - this.popupSizeX / 2
  }
  
  if ((this.positionY + this.popupSizeY / 2) >= this.smallImageSizeY)
  {
    this.positionY = this.smallImageSizeY - this.popupSizeY / 2
  }
  
  if ((this.positionX - this.popupSizeX / 2) <= 0)
  {
    this.positionX = this.popupSizeX / 2
  }
  
  if ((this.positionY - this.popupSizeY / 2) <= 0)
  {
    this.positionY = this.popupSizeY / 2
  }
  
  setTimeout(uZoom_createMethodReference(this, "showrect"), 10)
};



uZoom.prototype.showrect = function()
{
  var pleft = this.positionX - this.popupSizeX / 2;
  var ptop = this.positionY - this.popupSizeY / 2;
  var perX = pleft * (this.bigImageSizeX / this.smallImageSizeX);
  var perY = ptop * (this.bigImageSizeY / this.smallImageSizeY);
  
  if (document.documentElement.dir == 'rtl')
  {
    perX = (this.positionX + this.popupSizeX / 2 - this.smallImageSizeX) * (this.bigImageSizeX / this.smallImageSizeX)
  }
  
  pleft += parseInt(uZoom_getStyle(this.smallImage, 'borderLeftWidth'));
  ptop += parseInt(uZoom_getStyle(this.smallImage, 'borderTopWidth'));
  
  if (uZoom_UserAgent != 'msie' || !(document.compatMode && 'backcompat' == document.compatMode.toLowerCase()))
  {
    pleft += parseInt(uZoom_getStyle(this.smallImage, 'paddingLeft'));
    ptop += parseInt(uZoom_getStyle(this.smallImage, 'paddingTop'))
  }
  
  this.pup.style.left = pleft + 'px';
  this.pup.style.top = ptop + 'px';
  this.pup.style.visibility = "visible";
  
  if ((this.bigImageSizeX - perX) < parseInt(this.bigImageCont.style.width))
  {
    perX = this.bigImageSizeX - parseInt(this.bigImageCont.style.width)
  }
  
  var headerH = 0;
  
  if (this.settings && this.settings["header"] != "")
  {
    var headerH = 19
  }
  
  if (this.bigImageSizeY > (parseInt(this.bigImageCont.style.height) - headerH))
  {
    if ((this.bigImageSizeY - perY) < (parseInt(this.bigImageCont.style.height) - headerH))
    {
      perY = this.bigImageSizeY - parseInt(this.bigImageCont.style.height) + headerH
    }
  }
  
  this.bigImage.style.left = ( - perX) + 'px';
  this.bigImage.style.top = ( - perY) + 'px';
  
  this.bigImageCont.style.top = this.bigImageContStyleTop;
  this.bigImageCont.style.display = 'block';
  this.bigImageCont.style.visibility = 'visible';
  this.bigImage.style.display = 'block';
  this.bigImage.style.visibility = 'visible';
  this.recalculating = false
};



uZoom.prototype.hiderect = function()
{
  if (this.settings && this.settings["bigImage_always_visible"] == true) return;
  if (this.pup)
  {
    this.pup.style.visibility = "hidden"
  }
  this.bigImageCont.style.top = '-10000px';
  if (uZoom_UserAgent == 'msie')
  {
    this.smallImageCont.style.zIndex = 0
  }
};



uZoom.prototype.recalculatePopupDimensions = function()
{
  this.popupSizeX = parseInt(this.bigImageCont.style.width) / (this.bigImageSizeX / this.smallImageSizeX);
  
  if (this.settings && this.settings["header"] != "")
  {
    this.popupSizeY = (parseInt(this.bigImageCont.style.height) - 19) / (this.bigImageSizeY / this.smallImageSizeY)
  }
  else
  {
    this.popupSizeY = parseInt(this.bigImageCont.style.height) / (this.bigImageSizeY / this.smallImageSizeY)
  }
  
  if (this.popupSizeX > this.smallImageSizeX)
  {
    this.popupSizeX = this.smallImageSizeX
  }
  
  if (this.popupSizeY > this.smallImageSizeY)
  {
    this.popupSizeY = this.smallImageSizeY
  }
  
  this.popupSizeX = Math.round(this.popupSizeX);
  this.popupSizeY = Math.round(this.popupSizeY);
  
  if (! (document.compatMode && 'backcompat' == document.compatMode.toLowerCase()))
  {
    var bw = parseInt(uZoom_getStyle(this.pup, 'borderLeftWidth'));
    this.pup.style.width = (this.popupSizeX - 2 * bw) + 'px';
    this.pup.style.height = (this.popupSizeY - 2 * bw) + 'px'
  }
  else
  {
    this.pup.style.width = this.popupSizeX + 'px';
    this.pup.style.height = this.popupSizeY + 'px'
  }
};



uZoom.prototype.initPopup = function()
{
  this.pup = document.createElement("DIV");
  this.pup.className = 'uZoomPup';
  this.pup.style.zIndex = 10;
  this.pup.style.visibility = 'hidden';
  this.pup.style.position = 'absolute';
  this.pup.style["opacity"] = parseFloat(this.settings['opacity'] / 100.0);
  this.pup.style["-moz-opacity"] = parseFloat(this.settings['opacity'] / 100.0);
  this.pup.style["-html-opacity"] = parseFloat(this.settings['opacity'] / 100.0);
  this.pup.style["filter"] = "alpha(Opacity=" + this.settings['opacity'] + ")";
  
  this.smallImageCont.appendChild(this.pup);
  this.recalculatePopupDimensions();
  
  this.smallImageCont.unselectable = "on";
  this.smallImageCont.style.MozUserSelect = "none";
  this.smallImageCont.onselectstart = mView_ia;
  this.smallImageCont.oncontextmenu = mView_ia
};



uZoom.prototype.initBigContainer = function()
{
  var bigimgsrc = this.bigImage.src;
  if (this.bigImageSizeY < parseInt(this.bigImageCont.style.height))
  {
    this.bigImageCont.style.height = this.bigImageSizeY + 'px';
    if (this.settings && this.settings["header"] != "")
    {
      this.bigImageCont.style.height = (19 + this.bigImageSizeY) + 'px'
    }
  }
  
  if (this.bigImageSizeX < parseInt(this.bigImageCont.style.width))
  {
    this.bigImageCont.style.width = this.bigImageSizeX + 'px'
  }
  
  while (this.bigImageCont.firstChild)
  {
    this.bigImageCont.removeChild(this.bigImageCont.firstChild)
  }
  
  if (uZoom_UserAgent == 'msie')
  {
    var f = document.createElement("IFRAME");
    f.style.left = '0px';
    f.style.top = '0px';
    f.style.position = 'absolute';
    f.src = "javascript:''";
    f.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)';
    f.style.width = this.bigImageCont.style.width;
    f.style.height = this.bigImageCont.style.height;
    f.frameBorder = 0;
    this.bigImageCont.appendChild(f)
  }
  
  if (this.settings && this.settings["header"] != "")
  {
    var f = document.createElement("DIV");
    f.className = 'uZoomHeader';
    f.id = 'uZoomHeader' + this.bigImageCont.id;
    f.style.position = 'relative';
    f.style.zIndex = 10;
    f.style.left = '0px';
    f.style.top = '0px';
    f.style.padding = '3px';
    f.innerHTML = this.settings["header"];
    this.bigImageCont.appendChild(f)
  }
  
  var ar1 = document.createElement("DIV");
  ar1.style.overflow = "hidden";
  this.bigImageCont.appendChild(ar1);
  this.bigImage = document.createElement("IMG");
  this.bigImage.src = bigimgsrc;
  this.bigImage.style.position = 'relative';
  this.bigImage.style.borderWidth = '0px';
  this.bigImage.style.padding = '0px';
  this.bigImage.style.left = '0px';
  this.bigImage.style.top = '0px';
  ar1.appendChild(this.bigImage);

  var str = '<b></b>';
  var f = document.createElement("DIV");
  f.style.color = '#cccccc';
  f.style.fontSize = '10px';
  f.style.fontFamily = 'Tahoma';
  f.style.position = 'absolute';
  f.style.width = '100%';
  f.style.textAlign = 'center';
  f.innerHTML = str;
  this.bigImageCont.appendChild(f);
  f.style.left = '0px';
  f.style.top = parseInt(this.bigImageCont.style.height) - 20 + 'px'
};



uZoom.prototype.initZoom = function()
{
  if (this.loadingCont != null && !this.bigImage.complete && this.smallImage.width != 0 && this.smallImage.height != 0)
  {
    this.loadingCont.style.left = (parseInt(this.smallImage.width) / 2 - parseInt(this.loadingCont.offsetWidth) / 2) + 'px';
    this.loadingCont.style.top = (parseInt(this.smallImage.height) / 2 - parseInt(this.loadingCont.offsetHeight) / 2) + 'px';
    this.loadingCont.style.visibility = 'visible'
  }
  
  if (uZoom_UserAgent == 'safari')
  {
    if (!this.safariOnLoadStarted)
    {
      uZoom_addEventListener(this.bigImage, "load", uZoom_createMethodReference(this, "initZoom"));
      this.safariOnLoadStarted = true;
      return
    }
  }
  else
  {
    if (!this.bigImage.complete || !this.smallImage.complete)
    {
      setTimeout(uZoom_createMethodReference(this, "initZoom"), 100);
      return
    }
  }
  
  this.bigImage.style.borderWidth = '0px';
  this.bigImage.style.padding = '0px';
  
  this.bigImageSizeX = this.bigImage.width;
  this.bigImageSizeY = this.bigImage.height;
  
  this.smallImageSizeX = this.smallImage.width;
  this.smallImageSizeY = this.smallImage.height;
  
  if (this.bigImageSizeX == 0 || this.bigImageSizeY == 0 || this.smallImageSizeX == 0 || this.smallImageSizeY == 0)
  {
    setTimeout(uZoom_createMethodReference(this, "initZoom"), 100);
    return
  }
  
  if (uZoom_UserAgent == 'opera' || (uZoom_UserAgent == 'msie' && !(document.compatMode && 'backcompat' == document.compatMode.toLowerCase())))
  {
    this.smallImageSizeX -= parseInt(uZoom_getStyle(this.smallImage, 'paddingLeft'));
    this.smallImageSizeX -= parseInt(uZoom_getStyle(this.smallImage, 'paddingRight'));
    this.smallImageSizeY -= parseInt(uZoom_getStyle(this.smallImage, 'paddingTop'));
    this.smallImageSizeY -= parseInt(uZoom_getStyle(this.smallImage, 'paddingBottom'))
  }
  
  if (this.loadingCont != null) this.loadingCont.style.visibility = 'hidden';
  
  this.smallImageCont.style.width = this.smallImage.width + 'px';
  this.bigImageCont.style.top = '-10000px';
  this.bigImageContStyleTop = '0px';
  
  var r = uZoom_getBounds(this.smallImage);
  
  if (!r)
  {
    this.bigImageCont.style.left = this.smallImageSizeX + parseInt(uZoom_getStyle(this.smallImage, 'borderLeftWidth')) + parseInt(uZoom_getStyle(this.smallImage, 'borderRightWidth')) + parseInt(uZoom_getStyle(this.smallImage, 'paddingLeft')) + parseInt(uZoom_getStyle(this.smallImage, 'paddingRight')) + 15 + 'px'
  }
  else
  {
    this.bigImageCont.style.left = (r['right'] - r['left'] + 15) + 'px'
  }
  
  switch (this.settings['position'])
  {
  case 'left':
    this.bigImageCont.style.left = '-' + (15 + parseInt(this.bigImageCont.style.width)) + 'px';
    break;
  case 'bottom':
    if (r)
    {
      this.bigImageContStyleTop = r['bottom'] - r['top'] + 15 + 'px'
    }
    else
    {
      this.bigImageContStyleTop = this.smallImage.height + 15 + 'px'
    }
    this.bigImageCont.style.left = '0px';
    break;
  case 'top':
    this.bigImageContStyleTop = '-' + (15 + parseInt(this.bigImageCont.style.height)) + 'px';
    this.bigImageCont.style.left = '0px';
    break;
  case 'custom':
    this.bigImageCont.style.left = '0px';
    this.bigImageContStyleTop = '0px';
    break;
  case 'inner':
    this.bigImageCont.style.left = '0px';
    this.bigImageContStyleTop = '0px';
    
    if (this.settings['zoomWidth'] == -1)
    {
      this.bigImageCont.style.width = this.smallImageSizeX + 'px'
    }
    
    if (this.settings['zoomHeight'] == -1)
    {
      this.bigImageCont.style.height = this.smallImageSizeY + 'px'
    }
    
    break
  }
  
  if (this.pup)
  {
    this.recalculatePopupDimensions();
    return
  }
  
  this.initBigContainer();
  this.initPopup();
  
  uZoom_addEventListener(window.document, "mousemove", this.checkcoords_ref);
  uZoom_addEventListener(this.smallImageCont, "mousemove", this.mousemove_ref);
  
  if (this.settings && this.settings["drag_mode"] == true)
  {
    uZoom_addEventListener(this.smallImageCont, "mousedown", uZoom_createMethodReference(this, "mousedown"));
    uZoom_addEventListener(this.smallImageCont, "mouseup", uZoom_createMethodReference(this, "mouseup"))
  }
  
  if (this.settings && (this.settings["drag_mode"] == true || this.settings["bigImage_always_visible"] == true))
  {
    this.positionX = this.smallImageSizeX / 2;
    this.positionY = this.smallImageSizeY / 2;
    this.showrect()
  }
};



uZoom.prototype.replaceZoom = function(ael, e)
{
  if (ael.href == this.bigImage.src) return;
  
  var newBigImage = document.createElement("IMG");
  newBigImage.id = this.bigImage.id;
  newBigImage.src = ael.href;
  
  var p = this.bigImage.parentNode;
  p.replaceChild(newBigImage, this.bigImage);
  
  this.bigImage = newBigImage;
  this.bigImage.style.position = 'relative';
  this.smallImage.src = ael.rev;
  
  if (ael.title != '' && uZoom_$('uZoomHeader' + this.bigImageCont.id))
  {
    uZoom_$('uZoomHeader' + this.bigImageCont.id).firstChild.data = ael.title
  }
  
  this.safariOnLoadStarted = false;
  this.initZoom();
  this.smallImageCont.href = ael.href;
  
  try
  {
    uThumb.refresh()
  } catch(e) {}
};



function uZoom_findSelectors(id, zoom)
{
  var aels = window.document.getElementsByTagName("A");
  for (var i = 0; i < aels.length; i++)
  {
    if (aels[i].rel == id)
    {
      uZoom_addEventListener(aels[i], "click",
      function(event)
      {
        if (uZoom_UserAgent != 'msie')
        {
          this.blur()
        }
        else
        {
          window.focus()
        }
        uZoom_stopEventPropagation(event);
        return false
      });
      uZoom_addEventListener(aels[i], zoom.settings['thumb_change'], uZoom_createMethodReference(zoom, "replaceZoom", aels[i]));
      aels[i].style.outline = '0';
      aels[i].mzextend = uZoom_extendElement;
      aels[i].mzextend({
        zoom: zoom,
        selectThisZoom: function()
        {
          this.zoom.replaceZoom(null, this)
        }
      });
      
      var img = document.createElement("IMG");
      img.src = aels[i].href;
      img.style.position = 'absolute';
      img.style.left = '-10000px';
      img.style.top = '-10000px';
      document.body.appendChild(img);
      
      img = document.createElement("IMG");
      img.src = aels[i].rev;
      img.style.position = 'absolute';
      img.style.left = '-10000px';
      img.style.top = '-10000px';
      document.body.appendChild(img)
    }
  }
};



function uZoom_stopZooms()
{
  while (uZoomObjects.length > 0)
  {
    var zoom = uZoomObjects.pop();
    zoom.stopZoom();
    delete zoom
  }
};



function uZoom_findZooms()
{
  var loadingText = 'Loading Zoom';
  var loadingImg = '';
  var iels = window.document.getElementsByTagName("IMG");
  
  for (var i = 0; i < iels.length; i++)
  {
    if (/uZoomLoading/.test(iels[i].className))
    {
      if (iels[i].alt != '') loadingText = iels[i].alt;
      loadingImg = iels[i].src;
      break
    }
  }
  
  var aels = window.document.getElementsByTagName("A");
  
  for (var i = 0; i < aels.length; i++)
  {
    if (/uZoom/.test(aels[i].className))
    {
      while (aels[i].firstChild)
      {
        if (aels[i].firstChild.tagName != 'IMG')
        {
          aels[i].removeChild(aels[i].firstChild)
        }
        else
        {
          break
        }
      }
      
      if (aels[i].firstChild.tagName != 'IMG') throw "Invalid uZoom invocation!";
      
      var rand = Math.round(Math.random() * 1000000);
      
      aels[i].style.position = "relative";
      aels[i].style.display = 'block';
      aels[i].style.outline = '0';
      aels[i].style.textDecoration = 'none';
      
      uZoom_addEventListener(aels[i], "click",
      
      function(event)
      {
        if (uZoom_UserAgent != 'msie')
        {
          this.blur()
        }
        
        uZoom_stopEventPropagation(event);
        
        return false
      });
      
      if (aels[i].id == '')
      {
        aels[i].id = "sc" + rand
      }
      
      if (uZoom_UserAgent == 'msie')
      {
        aels[i].style.zIndex = 0
      }
      
      var smallImg = aels[i].firstChild;
      smallImg.id = "sim" + rand;
      
      var bigCont = document.createElement("DIV");
      bigCont.id = "bc" + rand;
      
      re = new RegExp(/opacity(\s+)?:(\s+)?(\d+)/i);
      matches = re.exec(aels[i].rel);
      
      var opacity = 50;
      
      if (matches)
      {
        opacity = parseInt(matches[3])
      }
      
      re = new RegExp(/thumb\-change(\s+)?:(\s+)?(click|mouseover)/i);
      matches = re.exec(aels[i].rel);
      var thumb_change = 'click';
      
      if (matches)
      {
        thumb_change = matches[3]
      }
      
      re = new RegExp(/zoom\-width(\s+)?:(\s+)?(\w+)/i);
      var zoomWidth = -1;
      matches = re.exec(aels[i].rel);
      bigCont.style.width = '300px';
      
      if (matches)
      {
        bigCont.style.width = matches[3];
        zoomWidth = matches[3]
      }
      
      re = new RegExp(/zoom\-height(\s+)?:(\s+)?(\w+)/i);
      var zoomHeight = -1;
      matches = re.exec(aels[i].rel);
      bigCont.style.height = '300px';
      
      if (matches)
      {
        bigCont.style.height = matches[3];
        zoomHeight = matches[3]
      }
      
      if(zoomWidth == 'auto')
      {
        bigCont.style.width = '300px';
        
        var smallImg_width = smallImg.width;
        var smallImg_height = smallImg.height;
        var smallImg_prop = smallImg_width/smallImg_height;
        
        zoomWidth = parseInt(zoomHeight)*parseFloat(smallImg_prop) + 'px';
        bigCont.style.width = parseInt(zoomHeight)*parseFloat(smallImg_prop) + 'px';
      }
      
      re = new RegExp(/zoom\-position(\s+)?:(\s+)?(\w+)/i);
      matches = re.exec(aels[i].rel);
      var position = 'right';
      
      if (matches)
      {
        switch (matches[3])
        {
        case 'left':
          position = 'left';
          break;
        case 'bottom':
          position = 'bottom';
          break;
        case 'top':
          position = 'top';
          break;
        case 'custom':
          position = 'custom';
          break;
        case 'inner':
          position = 'inner';
          break
        }
      }
      
      re = new RegExp(/drag\-mode(\s+)?:(\s+)?(true|false)/i);
      matches = re.exec(aels[i].rel);
      var drag_mode = false;
      
      if (matches)
      {
        if (matches[3] == 'true') drag_mode = true
      }
      
      re = new RegExp(/always\-show\-zoom(\s+)?:(\s+)?(true|false)/i);
      matches = re.exec(aels[i].rel);
      var bigImage_always_visible = false;
      
      if (matches)
      {
        if (matches[3] == 'true') bigImage_always_visible = true
      }
      
      bigCont.style.overflow = 'hidden';
      bigCont.className = "uZoomBigImageCont";
      bigCont.style.zIndex = 100;
      bigCont.style.visibility = 'hidden';
      
      if (position != 'custom')
      {
        bigCont.style.position = 'absolute'
      }
      else
      {
        bigCont.style.position = 'relative'
      }
      
      var bigImg = document.createElement("IMG");
      bigImg.id = "bim" + rand;
      bigImg.src = aels[i].href;
      bigCont.appendChild(bigImg);
      
      if (position != 'custom')
      {
        aels[i].appendChild(bigCont)
      }
      else
      {
        uZoom_$(aels[i].id + '-big').appendChild(bigCont)
      }
      
      var settings = {
        bigImage_always_visible: bigImage_always_visible,
        drag_mode: drag_mode,
        header: aels[i].title,
        opacity: opacity,
        thumb_change: thumb_change,
        position: position,
        loadingText: loadingText,
        loadingImg: loadingImg,
        zoomWidth: zoomWidth,
        zoomHeight: zoomHeight
      };
      
      if (position == 'inner')
      {
        aels[i].title = ''
      }
      
      var zoom = new uZoom(aels[i].id, 'sim' + rand, bigCont.id, 'bim' + rand, settings);
      aels[i].mzextend = uZoom_extendElement;
      aels[i].mzextend({
        zoom: zoom
      });
      zoom.initZoom();
      uZoom_findSelectors(aels[i].id, zoom)
    }
  }
};

if (uZoom_UserAgent == 'msie')
{
  try
  {
    document.execCommand("BackgroundImageCache", false, true)
  }
  catch(e) {};
}

uZoom_addEventListener(window, "load", uZoom_findZooms);