/*!
 * jQuery Expander Plugin v1.1
 *
 * Date: Mon Sep 12 11:39:53 2011 EDT
 * Requires: jQuery v1.3+
 *
 * Copyright 2011, Karl Swedberg
 * Dual licensed under the MIT and GPL licenses (just like jQuery):
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 *
 *
 *
*/
(function(c){c.expander={version:"1.1",defaults:{slicePoint:100,preserveWords:true,widow:4,expandText:"read more",expandPrefix:"&hellip; ",summaryClass:"summary",detailClass:"details",moreClass:"read-more",lessClass:"read-less",collapseTimer:0,expandEffect:"fadeIn",expandSpeed:250,userCollapse:true,userCollapseText:"read less",userCollapsePrefix:" ",onSlice:null,beforeExpand:null,afterExpand:null,onCollapse:null}};c.fn.expander=function(E){function F(b,e){var g=e?"div":"span";return[b.summary,e?"":
b.moreLabel,"<"+g,' class="'+b.detailClass+'">',b.details,"</"+g+">"].join("")}function u(b,e){if(b.lastIndexOf("<")>b.lastIndexOf(">"))b=b.slice(0,b.lastIndexOf("<"));if(e)b=b.replace(G,"");return b}function v(b,e){e.hide();e.prev("span."+b.moreClass).show().length||e.parent().children("div."+b.summaryClass).show().find("span."+b.moreClass).show()}function H(b,e,g){if(b.collapseTimer)w=setTimeout(function(){v(b,e);c.isFunction(b.onCollapse)&&b.onCollapse.call(g,false)},b.collapseTimer)}var x=c.extend({},
c.expander.defaults,E),I=/^<(?:area|br|col|embed|hr|img|input|link|meta|param).*>$/i,G=/(&(?:[^;]+;)?|\w+)$/,J=/<\/?(\w+)[^>]*>/g,y=/<(\w+)[^>]*>/g,z=/<\/(\w+)>/g,K=/^<[^>]+>.?/,w;this.each(function(){var b,e,g,q,j,k,l,t,A=[],r=[],m={},n=this,f=c(this),B=c([]),a=c.meta?c.extend({},x,f.data()):x;k=!!f.find("."+a.detailClass).length;var o=!!f.find("*").filter(function(){return/^block|table|list/.test(c(this).css("display"))}).length,s=(o?"div":"span")+"."+a.detailClass,L="span."+a.moreClass,M=a.expandSpeed||
0,p=c.trim(f.html());b=c.trim(f.text());var d=p.slice(0,a.slicePoint);if(!(b.length<=a.slicePoint&&!k)){c.each(["onSlice","beforeExpand","afterExpand","onCollapse"],function(h,i){m[i]=c.isFunction(a[i])});d=u(d);for(summTagless=d.replace(J,"").length;summTagless<a.slicePoint;){newChar=p.charAt(d.length);if(newChar=="<")newChar=p.slice(d.length).match(K)[0];d+=newChar;summTagless++}d=u(d,a.preserveWords);q=d.match(y)||[];j=d.match(z)||[];g=[];c.each(q,function(h,i){I.test(i)||g.push(i)});q=g;e=j.length;
for(b=0;b<e;b++)j[b]=j[b].replace(z,"$1");c.each(q,function(h,i){var C=i.replace(y,"$1"),D=c.inArray(C,j);if(D===-1){A.push(i);r.push("</"+C+">")}else j.splice(D,1)});r.reverse();if(!f.find(s).length){b=p.slice(d.length);if(b.split(/\s+/).length<a.widow&&!k)return;k=r.pop()||"";d+=r.join("");b=A.join("")+b;a.moreLabel='<span class="'+a.moreClass+'">'+a.expandPrefix;a.moreLabel+='<a href="#">'+a.expandText+"</a></span>";if(o){d='<div class="'+a.summaryClass+'">'+d+a.moreLabel;d+=k+"</div>";b=p;a.expandPrefix=
""}else d+=k;a.summary=d;a.details=b;if(m.onSlice)a=(g=a.onSlice.call(n,a))&&g.details?g:a;o=F(a,o);f.html(o)}l=f.find(s);t=f.find(L);l.hide();t.find("a").unbind("click.expander").bind("click.expander",function(h){h.preventDefault();t.hide();B.hide();m.beforeExpand&&a.beforeExpand.call(n);l[a.expandEffect](M,function(){l.css({zoom:""});m.afterExpand&&a.afterExpand.call(n);H(a,l,n)})});B=f.find("div."+a.summaryClass);a.userCollapse&&!f.find("span."+a.lessClass).length&&f.find(s).append('<span class="'+
a.lessClass+'">'+a.userCollapsePrefix+'<a href="#">'+a.userCollapseText+"</a></span>");f.find("span."+a.lessClass+" a").unbind("click.expander").bind("click.expander",function(h){h.preventDefault();clearTimeout(w);h=c(this).closest(s);v(a,h);m.onCollapse&&a.onCollapse.call(n,true)})}});return this};c.fn.expander.defaults=c.expander.defaults})(jQuery);

