function getProductDetailsPos($elem) {
  var elemPos = $elem.position(),
      leftPos = 0,
      topPos = 0;
      
  if($elem.length) {
    leftPos = elemPos.left;
    topPos = elemPos.top;
  }
    
  if($('#individual-athlete').length || $('#individual-team').length) {
    if($elem.parent().hasClass('alt')) {
      topPos -= 148;
    }
  } else if($('#horizontal-products-two').length) {
    leftPos = 0;
  } else {
    leftPos -= 11;
    topPos -= 8;
    if($elem.parent().hasClass('alt')) {
      leftPos -= 316;
    }
  }

  return { leftPos : leftPos, topPos : topPos};
}

function productDetails() {
  var $products = $('.product-listing .products');
  
  if($products.length) {
    addDetailImages($products);
    
    addCloseButton($products);
    
    bindProductClick($products);
    
    $products.each(function() {
      setInitialDetails($(this));
    });
  }
}

function addDetailImages($products) {
  $products.find('> li').each(function() {
    var $this = $(this),
        dataTrack = $this.children('a.photo').attr('data-track-event').replace('Initial ','');
    $this.children('.details').append('<a href="'+$this.children('a').attr('href')+'" class="photo" data-track-event="'+dataTrack+'"></a>');
    $this.find('img').clone().appendTo($this.find('.details .photo'));
  });
}

function addCloseButton($products) {
  $products.find('> li').each(function() {
    var $details = $(this).children('.details');
    
    $('<a />', {
      'class': 'close',
      href: '#',
      text: 'Close',
      title: 'Close',
      click: function(e) {
        hideDetails($details, $(this));
        e.preventDefault();
      }
    }).appendTo($details);
        
  });
}

function hideDetails($details, $close) {
  $details.fadeOut(500, function() {
    if($close != '' && $close != undefined) {
      $close.trigger('animation-finished');
    }
  });
}

function setPosition($details, $link) {
  var linkPos = getProductDetailsPos($link);
  
  $details.css({
    left: linkPos.leftPos,
    top: linkPos.topPos
  });
}

function showDetails($details, $link) {
  $details.fadeIn(500, function() {
    if($link != '' && $link != undefined) {
      $link.trigger('animation-finished');
    }
  });
}

function bindProductClick($products) {
  $products.find('> li > a').bind('click', function(e) {
    $products.find('.details').hide();
    var $this = $(this),
      $details = $this.siblings('.details');
      
    $this.addClass('no-outline');
    setPosition($details, $this);
    showDetails($details, $this);
      
    e.preventDefault();
  });
}

function setInitialDetails($products) {
  if($products.find('div.details:visible').length === 0) {
    var $initialProductLink = $products.find('> .current > a');
  
    if($initialProductLink.length === 0 && !($('#individual-athlete').length) && !($('#individual-team').length)) {
      $initialProductLink = $products.find('> li:first-child > a');
    }
  
    var $initialProductDetails = $initialProductLink.siblings('.details');
  
    setPosition($initialProductDetails, $initialProductLink);
    showDetails($initialProductDetails, $initialProductLink);
  }
}
