
/* - jquery.columnizer.min.js - */
// http://www.waltertejada.net/portal_javascripts/jquery.columnizer.min.js?original=1
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta http-equiv="Content-Style-Type" content="text/css"><title></title><meta name="Generator" content="Cocoa HTML Writer"><meta name="CocoaVersion" content="1038.35"><style type="text/css">p.p1{margin:0.0px 0.0px 0.0px 0.0px;font:12.0px Helvetica}</style></head><body><p class="p1">(function($){$.fn.columnize=function(options){var defaults={width:400,columns:false,buildOnce:false,overflow:false,doneFunc:function(){},target:false,ignoreImageLoading:true,float:"left",lastNeverTallest:false};var options=$.extend(defaults,options);return this.each(function(){var $inBox=options.target?$(options.target):$(this);var maxHeight=$(this).height();var $cache=$('&lt;div&gt;&lt;/div&gt;');var lastWidth=0;var columnizing=false;$cache.append($(this).children().clone(true));if(!options.ignoreImageLoading&amp;&amp;!options.target){if(!$inBox.data("imageLoaded")){$inBox.data("imageLoaded",true);if($(this).find("img").length&gt;0){var func=function($inBox,$cache){return function(){if(!$inBox.data("firstImageLoaded")){$inBox.data("firstImageLoaded","true");$inBox.empty().append($cache.children().clone(true));$inBox.columnize(options)}}}($(this),$cache);$(this).find("img").one("load",func);$(this).find("img").one("abort",func);return}}}</p><p class="p1">$inBox.empty();columnizeIt();if(!options.buildOnce){$(window).resize(function(){if(!options.buildOnce&amp;&amp;$.browser.msie){if($inBox.data("timeout")){clearTimeout($inBox.data("timeout"))}</p><p class="p1">$inBox.data("timeout",setTimeout(columnizeIt,200))}else if(!options.buildOnce){columnizeIt()}else{}})}</p><p class="p1">function columnize($putInHere,$pullOutHere,$parentColumn,height){while($parentColumn.height()&lt;height&amp;&amp;$pullOutHere[0].childNodes.length){$putInHere.append($pullOutHere[0].childNodes[0])}</p><p class="p1">if($putInHere[0].childNodes.length==0)return;var kids=$putInHere[0].childNodes;var lastKid=kids[kids.length-1];$putInHere[0].removeChild(lastKid);var $item=$(lastKid);if($item[0].nodeType==3){var oText=$item[0].nodeValue;var counter2=options.width/18;if(options.accuracy)</p><p class="p1">counter2=options.accuracy;var columnText;var latestTextNode=null;while($parentColumn.height()&lt;height&amp;&amp;oText.length){if(oText.indexOf(' ',counter2)!='-1'){columnText=oText.substring(0,oText.indexOf(' ',counter2))}else{columnText=oText}</p><p class="p1">latestTextNode=document.createTextNode(columnText);$putInHere.append(latestTextNode);if(oText.length&gt;counter2){oText=oText.substring(oText.indexOf(' ',counter2))}else{oText=""}}</p><p class="p1">if($parentColumn.height()&gt;=height&amp;&amp;latestTextNode!=null){$putInHere[0].removeChild(latestTextNode);oText=latestTextNode.nodeValue+oText}</p><p class="p1">if(oText.length){$item[0].nodeValue=oText}else{return false}}</p><p class="p1">if($pullOutHere.children().length){$pullOutHere.prepend($item)}else{$pullOutHere.append($item)}</p><p class="p1">return $item[0].nodeType==3}</p><p class="p1">function split($putInHere,$pullOutHere,$parentColumn,height){if($pullOutHere.children().length){$cloneMe=$pullOutHere.children(":first");$clone=$cloneMe.clone(true);if($clone.attr("nodeType")==1&amp;&amp;!$clone.hasClass("dontend")){$putInHere.append($clone);if($clone.is("img")&amp;&amp;$parentColumn.height()&lt;height+20){$cloneMe.remove()}else if(!$cloneMe.hasClass("dontsplit")&amp;&amp;$parentColumn.height()&lt;height+20){$cloneMe.remove()}else if($clone.is("img")||$cloneMe.hasClass("dontsplit")){$clone.remove()}else{$clone.empty();if(!columnize($clone,$cloneMe,$parentColumn,height)){if($cloneMe.children().length){split($clone,$cloneMe,$parentColumn,height)}}</p><p class="p1">if($clone.get(0).childNodes.length==0){$clone.remove()}}}}}</p><p class="p1">function singleColumnizeIt(){if($inBox.data("columnized")&amp;&amp;$inBox.children().length==1){return}</p><p class="p1">$inBox.data("columnized",true);$inBox.data("columnizing",true);$inBox.empty();$inBox.append($("&lt;div class='first last column' style='width:98%; padding: 3px; float: "+options.float+";'&gt;&lt;/div&gt;"));$col=$inBox.children().eq($inBox.children().length-1);$destroyable=$cache.clone(true);if(options.overflow){targetHeight=options.overflow.height;columnize($col,$destroyable,$col,targetHeight);if(!$destroyable.children().find(":first-child").hasClass("dontend")){split($col,$destroyable,$col,targetHeight)}</p><p class="p1">while(checkDontEndColumn($col.children(":last").length&amp;&amp;$col.children(":last").get(0))){var $lastKid=$col.children(":last");$lastKid.remove();$destroyable.prepend($lastKid)}</p><p class="p1">var html="";var div=document.createElement('DIV');while($destroyable[0].childNodes.length&gt;0){var kid=$destroyable[0].childNodes[0];for(var i=0;i&lt;kid.attributes.length;i++){if(kid.attributes[i].nodeName.indexOf("jQuery")==0){kid.removeAttribute(kid.attributes[i].nodeName)}}</p><p class="p1">div.innerHTML="";div.appendChild($destroyable[0].childNodes[0]);html+=div.innerHTML}</p><p class="p1">var overflow=$(options.overflow.id)[0];overflow.innerHTML=html}else{$col.append($destroyable)}</p><p class="p1">$inBox.data("columnizing",false);if(options.overflow){options.overflow.doneFunc()}}</p><p class="p1">function checkDontEndColumn(dom){if(dom.nodeType!=1)return false;if($(dom).hasClass("dontend"))return true;if(dom.childNodes.length==0)return false;return checkDontEndColumn(dom.childNodes[dom.childNodes.length-1])}</p><p class="p1">function columnizeIt(){if(lastWidth==$inBox.width())return;lastWidth=$inBox.width();var numCols=Math.round($inBox.width()/options.width);if(options.columns)numCols=options.columns;if(numCols&lt;=1){return singleColumnizeIt()}</p><p class="p1">if($inBox.data("columnizing"))return;$inBox.data("columnized",true);$inBox.data("columnizing",true);$inBox.empty();$inBox.append($("&lt;div style='width:"+(Math.round(100/numCols)-2)+"%; padding: 3px; float: "+options.float+";'&gt;&lt;/div&gt;"));$col=$inBox.children(":last");$col.append($cache.clone());maxHeight=$col.height();$inBox.empty();var targetHeight=maxHeight/numCols;var firstTime=true;var maxLoops=3;var scrollHorizontally=false;if(options.overflow){maxLoops=1;targetHeight=options.overflow.height}else if(options.height&amp;&amp;options.width){maxLoops=1;targetHeight=options.height;scrollHorizontally=true}</p><p class="p1">for(var loopCount=0;loopCount&lt;maxLoops;loopCount++){$inBox.empty();var $destroyable;try{$destroyable=$cache.clone(true)}catch(e){$destroyable=$cache.clone()}</p><p class="p1">$destroyable.css("visibility","hidden");for(var i=0;i&lt;numCols;i++){var className=(i==0)?"first column":"column";var className=(i==numCols-1)?("last "+className):className;$inBox.append($("&lt;div class='"+className+"' style='width:"+(Math.round(100/numCols)-2)+"%; float: "+options.float+";'&gt;&lt;/div&gt;"))}</p><p class="p1">var i=0;while(i&lt;numCols-(options.overflow?0:1)||scrollHorizontally&amp;&amp;$destroyable.children().length){if($inBox.children().length&lt;=i){$inBox.append($("&lt;div class='"+className+"' style='width:"+(Math.round(100/numCols)-2)+"%; float: "+options.float+";'&gt;&lt;/div&gt;"))}</p><p class="p1">var $col=$inBox.children().eq(i);columnize($col,$destroyable,$col,targetHeight);if(!$destroyable.children().find(":first-child").hasClass("dontend")){split($col,$destroyable,$col,targetHeight)}else{}</p><p class="p1">while(checkDontEndColumn($col.children(":last").length&amp;&amp;$col.children(":last").get(0))){var $lastKid=$col.children(":last");$lastKid.remove();$destroyable.prepend($lastKid)}</p><p class="p1">i++}</p><p class="p1">if(options.overflow&amp;&amp;!scrollHorizontally){var IE6=false;var IE7=(document.all)&amp;&amp;(navigator.appVersion.indexOf("MSIE 7.")!=-1);if(IE6||IE7){var html="";var div=document.createElement('DIV');while($destroyable[0].childNodes.length&gt;0){var kid=$destroyable[0].childNodes[0];for(var i=0;i&lt;kid.attributes.length;i++){if(kid.attributes[i].nodeName.indexOf("jQuery")==0){kid.removeAttribute(kid.attributes[i].nodeName)}}</p><p class="p1">div.innerHTML="";div.appendChild($destroyable[0].childNodes[0]);html+=div.innerHTML}</p><p class="p1">var overflow=$(options.overflow.id)[0];overflow.innerHTML=html}else{$(options.overflow.id).empty().append($destroyable.children().clone(true))}}else if(!scrollHorizontally){$col=$inBox.children().eq($inBox.children().length-1);while($destroyable.children().length)$col.append($destroyable.children(":first"));var afterH=$col.height();var diff=afterH-targetHeight;var totalH=0;var min=10000000;var max=0;var lastIsMax=false;$inBox.children().each(function($inBox){return function($item){var h=$inBox.children().eq($item).height();lastIsMax=false;totalH+=h;if(h&gt;max){max=h;lastIsMax=true}</p><p class="p1">if(h&lt;min)min=h}}($inBox));var avgH=totalH/numCols;if(options.lastNeverTallest&amp;&amp;lastIsMax){targetHeight=targetHeight+30;if(loopCount==maxLoops-1)maxLoops++}else if(max-min&gt;30){targetHeight=avgH+30}else if(Math.abs(avgH-targetHeight)&gt;20){targetHeight=avgH}else{loopCount=maxLoops}}else{$inBox.children().each(function(i){$col=$inBox.children().eq(i);$col.width(options.width+"px");if(i==0){$col.addClass("first")}else if(i==$inBox.children().length-1){$col.addClass("last")}else{$col.removeClass("first");$col.removeClass("last")}});$inBox.width($inBox.children().length*options.width+"px")}</p><p class="p1">$inBox.append($("&lt;br style='clear:both;'&gt;"))}</p><p class="p1">$inBox.find('.column').find(':first.removeiffirst').remove();$inBox.find('.column').find(':last.removeiflast').remove();$inBox.data("columnizing",false);if(options.overflow){options.overflow.doneFunc()}</p><p class="p1">options.doneFunc()}})}})(jQuery);</p></body></html>

