/* jQuery Plugin highlightFade (jquery.offput.ca/highlightFade) (c) 2006 Blair Mitchelmore (offput.ca) [EMAIL PROTECTED] */ /* (The inline documentation has returned until I can publish it on a page) Usage: $(whatever).hightlightFade(color,duration,complete,iterator); $(whatever).highlightFade({color:whatever,duration:whatever,complete:whatever,iterator:whatever}); Description: This plugin allows for simple "yellow fade" technique which was popularized by 37signals.com but this can highlight in any colour. It always fades to the current background of the element but if the need for specifying the final colour is requested I'll consider adding it (or you could do it yourself :)). Arguments: color: Defines the color at which to begin fading - a w3c css compatable color code (ie rgb(1,2,3), #ccc, #ed3e23) or a w3c spec color name (ie blue, red, gray, et. al.) - Default value: rgb(250,250,200) duration: Defines the speed at which the color fades away - a jQuery speed string (ie slow, fast) or a duration in milliseconds - Default value: default value of jQuery's $.speed function complete: Defines a function to call once the colour fade has finished - Can be anything you want it to be. You can access the element on which the fade was applied via the this variable. - Default value: no action iterator: Defines the method by which we move from the starting color to the final. - Can be a string representing one of the built in fading algorithms (ie 'linear', 'sinusoidal', or 'exponential') or a custom function of your design. The custom function must take as it's arguments the start value, the final value, the total number of steps and the current step. - Linear is an even colour progression, Sinusoidal changes in the beginning fast but slows as it approaches disappearing, Exponential changes slowly in the beginning but increases its colour change per step as time goes on. - Default value: linear Notes: - Any arguments can be set to the default by setting them as null in the function call - Any arguments not specified in the Object notation are also taken as the default value Examples: - Do a red exponential highlightFade on all p elements on the page at a crawl speed $('p').highlightFade({color'red','crawl',null,'exponential') - Do a bluish sinusoidal highlightFade on all div's with a class of 'new' and remove it afterwards $('div.new').highlightFade('rgb(128,128,255)',null,function() { $(this).remove() },'sinusoidal'); - Just do a plain old linear yellow fade on 'this' $(this).highlightFade(); */
$.fn.highlightFade = function(colour,settings) { if (typeof settings != 'object') settings = { color: arguments[0], speed: arguments[1], complete: arguments[2], iterator: arguments[3] }; if (typeof colour != 'object' || (colour && colour.constructor == Array)) settings['color'] = colour; else settings = colour; var o = settings; var ts = { 'linear': function(s,e,t,c) { return parseInt(s+(c/t)*(e-s)); }, 'sinusoidal': function(s,e,t,c) { return parseInt(s+Math.sin(((c/t)*90)*(Math.PI/180))*(e-s)); }, 'exponential': function(s,e,t,c) { return parseInt(s+(Math.pow(c/t,2))*(e-s)); } }; var t = (o['iterator'] && o['iterator'].constructor == Function) ? o['iterator'] : ts[o['iterator']] || ts['linear']; return this.each(function() { var i = 50; var e = (this.highlighting) ? this.highlighting.end : $.highlightFade.getBGColor(this) || [255,255,255]; var c = $.highlightFade.getRGB(o['color'] || [255,255,128]); var s = $.speed(o['speed'],o['complete']); var r = (this.highlighting && this.highlighting.orig) ? this.highlighting.orig : $.curCSS(this,'backgroundColor'); if (this.highlighting && this.highlighting.timer) window.clearInterval(this.highlighting.timer); this.highlighting = { steps: ((s.duration) / i), interval: i, currentStep: 0, start: c, end: e, orig: r }; $.highlightFade(this,s.complete,t); }); }; $.highlightFade = function(e,o,t) { e.highlighting.timer = window.setInterval(function() { var newR = t(e.highlighting.start[0],e.highlighting.end[0],e.highlighting.steps,e.highlighting.currentStep); var newG = t(e.highlighting.start[1],e.highlighting.end[1],e.highlighting.steps,e.highlighting.currentStep); var newB = t(e.highlighting.start[2],e.highlighting.end[2],e.highlighting.steps,e.highlighting.currentStep); $(e).css('backgroundColor',$.highlightFade.asRGBString([newR,newG,newB])); if (e.highlighting.currentStep++ >= e.highlighting.steps) { $(e).css('backgroundColor',e.highlighting.orig || ''); if (o && o.constructor == Function) o.call(e); window.clearInterval(e.highlighting.timer); e.highlighting = null; } },e.highlighting.interval); }; $.highlightFade.getRGB = function(c,d) { var result; if (c && c.constructor == Array && c.length == 3) return c; if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c)) return [parseInt(result[1]),parseInt(result[2]),parseInt(result[3])]; else if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c)) return [parseFloat(result[1])*2.55,parseFloat(result[2])*2.55,parseFloat(result[3])*2.55]; else if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c)) return [parseInt("0x"+ result[1] + result[1]),parseInt("0x" + result[2] + result[2]),parseInt("0x" + result[3] + result[3])]; else if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c)) return [parseInt("0x" + result[1]),parseInt("0x" + result[2]),parseInt("0x" + result[3])]; else return $.highlightFade.checkColorName(c) || d || null; }; $.highlightFade.asRGBString = function(a) { return "rgb(" + a.join(",") + ")"; }; $.highlightFade.getBGColor = function(e) { var s; do if (((s = $.curCSS(e,'backgroundColor')) != '' && s != 'transparent') || (e.tagName.match(/^body$/i)) || (e.highlighting && e.highlighting.end)) break; while (e = e.parentNode); if (e.highlighting && e.highlighting.end) s = e.highlighting.end; if (s == undefined || s == '' || s == 'transparent') s = [255,255,255]; return $.highlightFade.getRGB(s); }; $.highlightFade.checkColorName = function(c) { if (!c) return null; switch(c.replace(/^\s*|\s*$/g,'').toLowerCase()) { case 'aqua': return [0,255,255]; case 'black': return [0,0,0]; case 'blue': return [0,0,255]; case 'fuchsia': return [255,0,255]; case 'gray': return [128,128,128]; case 'green': return [0,128,0]; case 'lime': return [0,255,0]; case 'maroon': return [128,0,0]; case 'navy': return [0,0,128]; case 'olive': return [128,128,0]; case 'purple': return [128,0,128]; case 'red': return [255,0,0]; case 'silver': return [192,192,192]; case 'teal': return [0,128,128]; case 'white': return [255,255,255]; case 'yellow': return [255,255,0]; } }; aedmonds wrote: > > Hey everybody, > > It seems that the maintainer at http://jquery.offput.ca/highlightFade/ has > some problems with the site. I can't access any of the code for the > highlightFade plugin. It's not available in the jQuery SVN either. > > Could someone please post the uncompressed code for me? > > Thanks a bunch, > > -A > -- View this message in context: http://www.nabble.com/highlightFade%27s-source-code-missing...-tf2828595.html#a7896710 Sent from the JQuery mailing list archive at Nabble.com. _______________________________________________ jQuery mailing list discuss@jquery.com http://jquery.com/discuss/