var _____WB$wombat$assign$function_____=function(name){return (self._wb_wombat && self._wb_wombat.local_init && self._wb_wombat.local_init(name))||self[name];};if(!self.__WB_pmw){self.__WB_pmw=function(obj){this.__WB_source=obj;return this;}}{ let window = _____WB$wombat$assign$function_____("window"); let self = _____WB$wombat$assign$function_____("self"); let document = _____WB$wombat$assign$function_____("document"); let location = _____WB$wombat$assign$function_____("location"); let top = _____WB$wombat$assign$function_____("top"); let parent = _____WB$wombat$assign$function_____("parent"); let frames = _____WB$wombat$assign$function_____("frames"); let opens = _____WB$wombat$assign$function_____("opens"); /* Thank you Drew McLellan for starting us off with http://24ways.org/2006/tasty-text-trimmer */ TextTrimmer = Class.create(); TextTrimmer.prototype = { initialize: function(attachitem, targetitem, chunkClass, minValue, maxValue) { this.attachitem = attachitem; this.targetitem = targetitem; this.chunkClass = chunkClass; this.minValue = minValue; this.maxValue = maxValue; this.curValue = maxValue; this.chunks = false; this.sliderhandle = 'trimmerhandle'; this.slidertrack = 'trimmertrack'; this.trimmore = 'trimmermore'; this.trimless = 'trimmerless'; this.prevState = null; this.trimMoreListener = this.trimMoreAction.bindAsEventListener(this); this.trimLessListener = this.trimLessAction.bindAsEventListener(this); this.init = false; }, setupTrimmer: function(newvalue) { this.curValue = newvalue; if (this.curValue >= this.maxValue) { this.curValue = this.maxValue; $(this.targetitem).removeClassName("trimmed"); } else if (this.curValue < this.minValue) { this.curValue = this.minValue; } this.chunks = false; var thisTrimmer = this; if (this.trimSlider instanceof Control.Slider) { this.trimSlider.dispose(); } this.trimSlider = new Control.Slider(thisTrimmer.sliderhandle, thisTrimmer.slidertrack, { range: $R(thisTrimmer.minValue, thisTrimmer.maxValue), sliderValue: thisTrimmer.curValue, onSlide: function(value) { thisTrimmer.doTrim(value); }, onChange: function(value) { thisTrimmer.doTrim(value); } }); if (this.init) { Event.stopObserving(this.trimmore, 'click', this.trimMoreListener); Event.stopObserving(this.trimless, 'click', this.trimLessListener); } Event.observe(this.trimmore, 'click', this.trimMoreListener); Event.observe(this.trimless, 'click', this.trimLessListener); this.init = true; }, trimMoreAction: function() { this.trimSlider.setValue(this.curValue + 20); }, trimLessAction: function() { this.trimSlider.setValue(this.curValue - 20); }, trimAgain: function(value) { this.loadChunks(); this.doTrim(value); }, loadChunks: function() { var everything = $(this.targetitem).getElementsByClassName(this.chunkClass); this.chunks = []; for (i=0; i'; } } /* Add 'trimmed' class to while active */ if (this.curValue != this.maxValue) { $(this.targetitem).addClassName("trimmed"); } else { $(this.targetitem).removeClassName("trimmed"); } }, saveState: function() { this.prevState = new Hash({ curValue: this.curValue }); }, restoreState: function() { if (this.prevState instanceof Hash) { this.setupTrimmer(this.prevState.curValue); this.prevState = null; } } } } /* FILE ARCHIVED ON 19:47:52 Jul 11, 2007 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 06:19:18 Nov 27, 2025. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). */ /* playback timings (ms): captures_list: 0.819 exclusion.robots: 0.084 exclusion.robots.policy: 0.071 esindex: 0.014 cdx.remote: 37.269 LoadShardBlock: 161.19 (3) PetaboxLoader3.datanode: 185.77 (4) PetaboxLoader3.resolve: 121.818 (2) load_resource: 195.663 */