
(function($){$.fn.mediaPreview=function(options){var defaults={offset:10,loading_text:'Loading, please wait...'};var options=$.extend(defaults,options);$('body').append('<div id="mediaPreviewWrapper"></div>');$('#mediaPreviewWrapper').append('<h2 id="mediaPreviewTitle"></h2>');$('#mediaPreviewWrapper').append('<div id="mediaPreviewBody"></div>');return this.each(function(){var obj=$(this);if(obj.length<1)return false;var previewTimeout;function showPreview(wrapper,header,title,src,width,height){var previewHTML='<img id="mediaPreviewImage" height="'+height+'" width="'+width+'" src="'+src+'" alt=""/>'+loading_html;header.innerHTML=title;if(title){$('#mediaPreviewTitle').css('display','block');}else{$('#mediaPreviewTitle').css('display','none');}
document.getElementById('mediaPreviewBody').innerHTML=previewHTML;previewProgress=document.getElementById('mediaPreviewProgBar');previewImage=document.getElementById('mediaPreviewImage');previewImage.onload=function(){previewProgress.style.display='none';}
previewTimeout=setTimeout(function(){wrapper.display='block'},250);}
function hidePreview(wrapper,header,image){clearTimeout(previewTimeout);$('#mediaPreviewBody').empty();wrapper.display='none';}
function previewMouseFollow(event,wrapper,width,height,winWidth,winHeight,topOffset){pageX=event.pageX;pageY=event.pageY;previewOffsetTop=(winHeight-height)/2;previewOffsetLeft=(winWidth-width)/2;correctedTopOffset=previewOffsetTop+topOffset;centered=false;if(winHeight>height){if(pageY<correctedTopOffset-options.offset){pageY=pageY+options.offset;}else if(pageY>correctedTopOffset+height+options.offset){pageY=pageY-options.offset-height;}else{pageY=correctedTopOffset;centered=true;}}else{pageY=topOffset;centered=true;}
if(centered){if(pageX<winWidth/2){pageX+=options.offset;}else{pageX=pageX-width-options.offset;}}else{if(pageX<previewOffsetLeft-options.offset){pageX=pageX+options.offset;}else if(pageX>previewOffsetLeft+width+options.offset){pageX=pageX-width-options.offset;}else{pageX=previewOffsetLeft;}}
wrapper.left=pageX+'px';wrapper.top=pageY+'px';}
var previewProgress;var previewImage;var windowObj=new Object();var currentWindow=$(window);var previewWrapper=document.getElementById('mediaPreviewWrapper').style;var previewHeading=document.getElementById('mediaPreviewTitle');var loading_html='<div id="mediaPreviewProgBar">'+options.loading_text+'</div>';windowObj.width=currentWindow.width();windowObj.height=currentWindow.height();windowObj.scrollTop=currentWindow.scrollTop();currentWindow.resize(function(){windowObj.width=$(this).width();windowObj.height=$(this).height();}).scroll(function(){windowObj.scrollTop=$(this).scrollTop();});obj.each(function(){var currentMedia=$(this);var widthOffset=32;var heightOffset=53;var display;var previewObject=new Object;previewObject.img=currentMedia.attr('data-src');previewObject.width=parseInt(currentMedia.attr('data-width'));previewObject.height=parseInt(currentMedia.attr('data-height'));previewObject.title=currentMedia.attr('title');if(previewObject.width>0){currentMedia.hover(function(){var fileExt=previewObject.img.substr(previewObject.img.length-4,4).toLowerCase();$('#mediaPreviewBody').html('<img id="mediaPreviewImage" height="" width="" src="" alt=""/>'+loading_html);previewProgress=document.getElementById('mediaPreviewProgBar');previewImage=document.getElementById('mediaPreviewImage');previewImage.onload=function(){previewProgress.style.display='none';}
previewProgress.style.display="block";previewWidth=previewObject.width+widthOffset;previewHeight=previewObject.height+heightOffset;if(windowObj.width>previewWidth){display=true;}else{display=false;}
if(display){showPreview(previewWrapper,previewHeading,previewObject.title,previewObject.img,previewObject.width,previewObject.height);}},function(){hidePreview(previewWrapper,previewHeading);}).mousemove(function(event){if(display){previewMouseFollow(event,previewWrapper,previewWidth,previewHeight,windowObj.width,windowObj.height,windowObj.scrollTop);}});}});});};})(jQuery);
