$(document).ready(function() {  
  $('.download_hover .download_thumb').hover(function(){
	  var windowHeight = $(window).innerHeight();	  
	  var widthOfPage = $(window).innerWidth();
	  var bottomOfPage = $(window).scrollTop() + windowHeight;
	  
	  var imageOffset = $(this).position();
	  var width = $(this).width();
	  var height = $(this).height();
	  var offset = $(this).offset();
	  var imagePositionFromBottom = bottomOfPage - offset.top;
	  var largeImage = $(this).attr('rel');
	  var largeHeight = height*2;
	  var largeWidth = width*2;
	  var bodyOffset = $("body").offset();
	  
	  var topOffset = offset.top+largeHeight;
	  var rightOffset = offset.left+bodyOffset.left+largeWidth+width;
	 
	  if(topOffset > bottomOfPage && rightOffset < widthOfPage){
		  var topOffset = bottomOfPage - topOffset + imageOffset.top - 5;
		  var top = topOffset;
		  var left = width + imageOffset.left + bodyOffset.left + 5;
	  }else if(topOffset > bottomOfPage && rightOffset > widthOfPage){
		  var topOffset = bottomOfPage - topOffset + imageOffset.top - 5;
		  var top = topOffset;
		  var left = 0 + imageOffset.left + bodyOffset.left - largeWidth - 7;
  	  }else if(rightOffset > widthOfPage && imagePositionFromBottom < windowHeight){
		  var top = imageOffset.top;
		  var left = 0 + imageOffset.left + bodyOffset.left - largeWidth - 7;
  	  }else if(rightOffset > widthOfPage && imagePositionFromBottom > windowHeight){
		  var top = imageOffset.top + imagePositionFromBottom - windowHeight + 5;
		  var left = 0 + imageOffset.left + bodyOffset.left - largeWidth - 7;
  	  }else if(imagePositionFromBottom > windowHeight){
		  var top = imageOffset.top + imagePositionFromBottom - windowHeight + 5;
		  var left = width + imageOffset.left + bodyOffset.left + 5;
  	  }else{
		  var top = imageOffset.top;
		  var left = width + imageOffset.left + bodyOffset.left + 5;
	  }
	  $('<div id="preview_image" style="top: '+top+'px;left:'+left+'px;">'+largeImage+'</div>').insertAfter(this);
	  
  },function(){
	  $('#preview_image').remove();
  });
});