var elements = $$(".showPhoto");
var images = new Hash();
var lock = 0;

for (var i = 0; i < elements.length; i++) {
  Event.observe(elements[i], "mouseout", function(event) {
    lock++;
    $("togglePhoto").hide();
    
    $('toggleObverse').src = "";
    $('toggleReverse').src = "";
    $("toggleGurt").src = "";
  });
  
  Event.observe(elements[i], "mouseover", function(event) {
    var id = this.identify().replace("lot", "");
    var tempLock = ++lock;
    
    setTimeout(function() {
      if (tempLock != lock) {
        return;
      }
      
      if (images.get(id)) {
        preload(tempLock, images.get(id).obversePath, images.get(id).reversePath, images.get(id).gurtPath);
      } else {
        new Ajax.Request(togglePhotoActionLink.replace("-id-", id), {
          method: 'get',
          onSuccess: function getPhotoPath(transport) {
            var packet = transport.responseText.evalJSON(true);  
            
            preload(tempLock, packet.obversePath, packet.reversePath, packet.gurtPath);
            images.set(id, packet);
          }
        });
      }
    }, 500);
  }); 
  
  Event.observe(elements[i], "mousemove", function(event) {
    var clientX = Event.pointer(event).x;
    var clientY = Event.pointer(event).y;
    
    $('togglePhoto').style.top = 1 + clientY + "px";
    $('togglePhoto').style.left = 1 + clientX + "px";
  });
}

function preload(tempLock, obversePath, reversePath, gurtPath) {
  var obversePreloader = new Image();
  var reversePreloader = new Image();
  var gurtPreloader = null;
  
  obversePreloader.onload = function() {
    if (tempLock == lock) {
      $('toggleObverse').src = obversePreloader.src;
    }
  };
  
  reversePreloader.onload = function() {
    if (tempLock == lock) {
      $('toggleReverse').src = reversePreloader.src;
    }
  };
  
  if (gurtPath == "null") {
    gurtPath = null;
  }
  
  if (gurtPath != null) {
    $("toggleGurt").show();
    gurtPreloader = new Image();
  
    gurtPreloader.onload = function() {
      if (tempLock == lock) {
        $('toggleGurt').src = gurtPreloader.src;
      }
    };  
    
    gurtPreloader.src = gurtPath; 
  } else {
    $("toggleGurt").hide();
  }
  
  obversePreloader.src = obversePath;
  reversePreloader.src = reversePath;
  
  $("togglePhoto").show();
}

var odds = $$(".recordRow0");
var evens = $$(".recordRow1");

for (var i = 0; i < odds.length; i++) {
  Event.observe(odds[i], "mouseout", function(event) {
    this.style.background = 'white';
  });  
  
  Event.observe(odds[i], "mouseover", function(event) {
    this.style.background = '#eaeaea';
  });  
}

for (var i = 0; i < evens.length; i++) {
  Event.observe(evens[i], "mouseout", function(event) {
    this.style.background = '#ffffe1';
  });  
  
  Event.observe(evens[i], "mouseover", function(event) {
    this.style.background = '#eaeaea';
  });  
}