function isImageOk(img) {
  if (!img.complete) {
    return false;
  }
  if (typeof img.naturalWidth != "undefined" && img.naturalWidth == 0) {
    return false;
  }
  return true;
}

function viewport(e) {
	return {
		sx: $(window).scrollLeft(),
		sy: $(window).scrollTop(),
		cx: $(window).width(),
		cy: $(window).height(),
		mx: e.pageX - $(window).scrollLeft(),
		my: e.pageY - $(window).scrollTop()
	};
}

function nastav_styl(e){
  var v = viewport(e);
  var widthP = $("#preview").width()+15;
  var heightP = $("#preview").height()+15;
  var celkemY = v.my + heightP + yOffset;
  var celkemX = v.mx + widthP + xOffset;
  var top;
  var left;
  if (celkemY > v.cy){
    top = (v.cy+v.sy) - heightP;
  }else{
    top = e.pageY + yOffset;
  }
  if (celkemX > v.cx){
    left = (v.cx+v.sx) - widthP;
  }else{
    left = e.pageX + xOffset;
  }
	$("#preview")
		.css("top",top + "px")
		.css("left",left + "px");
}

this.imagePreview = function(){	
	/* CONFIG */
	
		xOffset = 20;
		yOffset = 20;
		
	$("a.preview").mouseover(function(e){
		$("#preview").remove();
	  this.t = this.title;
		this.title = "";	
		var c = (this.t != "") ? "<br/>" + this.t : "";
//		$("body").append("<p id='preview'><img src='"+ this.href +"' alt='Image preview' />"+ c +"</p>");
		$("body").append("<p id='preview'><img src='"+ this.href +"' alt='Image preview' /></p>");
		$("#preview").mouseout(function(e){
      if ((e.pageY < parseInt($("#preview").css("top")))||(e.pageX < parseInt($("#preview").css("left")))){
    	  $("#preview").remove();
      }
	  });
  });
	$("a.preview").mousemove(function(e){
    $("#preview").show();
	  nastav_styl(e);
	});
	$("a.preview").mouseout(function(e){
    if ((e.pageY < parseInt($("#preview").css("top")))||(e.pageX < parseInt($("#preview").css("left")))){
  	  $("#preview").remove();
    }
	});

};


$(document).ready(function(){
  imagePreview();
  $(".preview").click ( function (e) {
    e.preventDefault();
  });
});

