Highslide for the lazy man
I use the funky highslide.js javascript to do the thumbnail enlargement on here. Previously I have had to add the markup for each thumbnail manually, which is a bit boring.
So tonight I wrote a bit of code to apply the highslide stuff onto any thumbnails on the page (which don’t already have it). And here it is.
function highSlideEm(){ //This function will loop through all the a tags on the page that link to images, //have a thumbnail image as a child tab and apply the highslide stuff. var arrLinks = document.getElementsByTagName("a"); var iLink; for(iLink = 0; iLink < arrLinks.length; iLink++){ var objLink = arrLinks[iLink]; //alert(objLink.innerHTML); //do we have an img tag as the immediate child? var arrImgs = objLink.getElementsByTagName("img"); if(arrImgs.length == 1){ //alert(arrImgs[0].src); if(isThumbnail(arrImgs[0].src) == true){ addClass(objLink, 'highslide'); //alert(objLink.onclick); //if the onclick event is undefined then add the highslide stuff if( (objLink.onclick == undefined) || (objLink.onclick == 'undefined') ){ //we need to add it //alert('add it'); objLink.onclick = function(){ return hs.expand(this); }; };//end if onclick };//end if isThumbnail //isThumbnail(arrImgs[0].src); };//end if };//end for iLink };//end function highSlideEm function isThumbnail(sPath){ //Is the path passed in a thumbnail? Worked out from the filename, //which will end in .thumbnail.ext //alert(sPath); var lDot = sPath.lastIndexOf("."); //alert('lDot = ' + lDot); if(lDot > -1){ var nDot = sPath.lastIndexOf(”.”, lDot - 1); if(nDot > -1){ var bitName = sPath.substring(nDot + 1, lDot); //alert(bitName); if(bitName.toLowerCase() == “thumbnail”){ return true; };//end if bitName };//end if nDot };//end if lDot return false; };//end function isThumbnail function addClass(objLink, sClass){ //This function will examine the list of classNames applied to a link, //if the sClass specified one is not yet applied it will add it var itExists = false; var arrC = objLink.className.split(” “); var iC; for(iC = 0; iC < arrC.length; iC++){ //look for a match (case sensitive) if(arrC[iC] == sClass){ itExists = true; };//end if };//end for iC if(itExists == false){ objLink.className += ' ' + sClass; };//end if };//end function
Maybe someone will find it useful.
(View the source to get a nicely spaced out, readable version. Wordpress has messed up the display, I’ve not really done a left-hand margin Mike.)
Who’s a smarty pants then? Do you think a well placed would get rid of the Mike-ness?
Who’s a smarty pants then? Do you think a well placed >pre< would get rid of the Mike-ness? (Sorry Chris, wordpress mucked up my last comment with an html tag in too
Aye, that’ll do.