// jQuery Link Thumbnailer 1.0.2. 2009 07 08. Dave Smith (dave-smith.info) Trinity College Dublin (tcd.ie).
(function($){$.fn.link_thumbnailer=function(options){var o=$.extend({},$.fn.link_thumbnailer.defaults,options);if($(this)[0]&&$(this)[0].tagName.toLowerCase()!="a"){return this.each(function(){$(this).find("a").link_thumbnailer()})}var imgs=[];var set_with_css=true;var my_width=$(this).eq(0).css("width");if(my_width!="auto"){$(this).eq(0).parent().siblings().each(function(){if($(this).find("a").css("width")!=my_width){set_with_css=false}});if(set_with_css){o.width=parseInt($(this).eq(0).css("width"),10);o.height=parseInt($(this).eq(0).css("height"),10)}}return this.each(function(i){var a=this;if(o.redraw){update_img_sizes($(a).find("img")[0],o)}else{var current_image=$(a).find("img");if(current_image.length==0){var href=$(a).attr("href");if(href){var href_split=href.split("/");var path=href_split.slice(0,-1).join("/");var file_name=href_split.slice(-1)[0];var base_name="";var extension="no-extension";file_name_split=file_name.split(".");if(file_name_split.length==1){base_name=file_name_split[0]}else{extension=file_name_split.slice(-1)[0].toLowerCase();base_name=file_name_split.slice(0,-1).join(".")}thumbnail={path:path+"/thumbnails/"+base_name+".jpg",fallback_path:o.fallback_thumbnail_location,generic_fallback_path:o.fallback_thumbnail_location};if(extension=="gif"||extension=="jpeg"||extension=="jpg"||extension=="png"){thumbnail.fallback_path=href}else{if(extension=="mov"||extension=="avi"||extension=="mp4"){thumbnail.fallback_path+="/video.jpg"}else{if(extension=="swf"){thumbnail.fallback_path+="/swf.jpg"}else{if(extension=="m4a"||extension=="mp3"||extension=="qta"||extension=="ogg"){thumbnail.fallback_path+="/audio.jpg"}else{thumbnail.fallback_path+="/generic.jpg"}}}}thumbnail.generic_fallback_path+="/generic.jpg";var link_text=$(a).text();$(a).attr("title",link_text).data("link-thumbnailer.thumbnail",thumbnail).css({overflow:"hidden",width:o.width+"px",height:o.height+"px"});var success=function(img,width,height){var thumbnail=$(a).data("link-thumbnailer.thumbnail");var img=$(a).html('<img src="'+thumbnail.path+'" alt="'+link_text+'." />').find("img")[0];update_img_sizes(img,width,height,o)};if(o.check_for_thumbnails){img=imgs[imgs.length]=new Image();img.onload=function(){var self=this;var t=window.setInterval(function(){if(self.width!=0){clearInterval(t);success(self,self.width,self.height)}},100)};img.onerror=function(){thumbnail=$(a).data("link-thumbnailer.thumbnail");thumbnail.path=thumbnail.fallback_path;$(a).data("link-thumbnailer.thumbnail",thumbnail);img=imgs[imgs.length]=new Image();img.onload=function(){var self=this;var t=window.setInterval(function(){if(self.width!=0){clearInterval(t);success(self,self.width,self.height)}},100)};img.onerror=function(){thumbnail=$(a).data("link-thumbnailer.thumbnail");thumbnail.path=thumbnail.generic_fallback_path;$(a).data("link-thumbnailer.thumbnail",thumbnail);img=imgs[imgs.length]=new Image();img.onload=function(){var self=this;var t=window.setInterval(function(){if(self.width!=0){clearInterval(t);success(self,self.width,self.height)}},100)};img.src=thumbnail.path};img.src=thumbnail.path};img.src=thumbnail.path}else{thumbnail=$(a).data("link-thumbnailer.thumbnail");thumbnail.path=thumbnail.fallback_path;$(a).data("link-thumbnailer.thumbnail",thumbnail);img=imgs[imgs.length]=new Image();img.onload=function(){var self=this;var t=window.setInterval(function(){if(self.width!=0){clearInterval(t);success(self,self.width,self.height)}},100)};img.onerror=function(){thumbnail=$(a).data("link-thumbnailer.thumbnail");thumbnail.path=thumbnail.generic_fallback_path;$(a).data("link-thumbnailer.thumbnail",thumbnail);img=imgs[imgs.length]=new Image();img.onload=function(){var self=this;var t=window.setInterval(function(){if(self.width!=0){clearInterval(t);success(self,self.width,self.height)}},100)};img.src=thumbnail.path};img.src=thumbnail.path}}}else{update_img_sizes(current_image[0],o)}}})};var update_img_sizes=function(img,width,height,o){var aspect_ratio=width/height;var aspect_ratio_diff=(o.width/o.height)-aspect_ratio;var width=o.width;var height=Math.floor(width/aspect_ratio);if(aspect_ratio_diff<=0){height=o.height;width=Math.floor(height*aspect_ratio)}var left="-"+Math.abs(Math.floor((o.width-width))/2)+"px";var top="-"+Math.abs(Math.floor((o.height-height)/2))+"px";$(img).css({width:width+"px",height:height+"px",position:"relative",left:left,top:top})};$.fn.link_thumbnailer.defaults=o={};o.version="1.0.2";o.fallback_thumbnail_location=$('head link[rel="Start"]').attr("href")+"/assets/img/link-thumbnailer";o.width=104;o.height=104;o.check_for_thumbnails=true;o.redraw=false})(jQuery);