(function($){$.fn.glow=function(){var clookup={green:"008000",yellow:"ffff00"};function nameToColor(n){return clookup[(""+n).toLowerCase()]||null;}
function re_rgba()
{return new RegExp('rgba\\s*\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\,\\s*([0-9]{1,3})\\s*\\)');}
function re_rgb()
{return new RegExp('rgb\\s*\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)');}
function parseColor(c){var r;var e=new RegExp('#([A-F0-9]{2})([a-fA-F0-9]{2})([A-F0-9]{2})','i');if(r=e.exec(c)){return[parseInt(r[1],16),parseInt(r[2],16),parseInt(r[3],16)];}
e=new RegExp('#([A-F0-9]{1})([A-F0-9]{1})([A-F0-9]{1})','i');if(r=e.exec(c)){return[parseInt(r[1]+r[1],16),parseInt(r[2]+r[2],16),parseInt(r[3]+r[3],16)];}
e=re_rgb();if(r=e.exec(c)){return[parseInt(r[1],10),parseInt(r[2],10),parseInt(r[3],10)];}
e=re_rgba();if(r=e.exec(c)){return[parseInt(r[1],10),parseInt(r[2],10),parseInt(r[3],10),parseInt(r[4],10)];}
if(r=nameToColor(c)){return parseColor('#'+r);}
if(window.console){console.log('can not parse color '+c);}else{}
return false;}
function colorMatters(c){if(c=="inherit"||c=="transparent"){return false;}
var e=re_rgba();var r=e.exec(c);if(r&&parseInt(r[4],10)==0){return false;}
return true;}
function printColor(r){return'#'+(0x1000000+parseInt(r[0],10)*0x10000+parseInt(r[1],10)*0x100+parseInt(r[2],10)).toString(16).slice(-6);}
function finalBackgroundColor(e){var bg;do{bg=e.css('background-color');if(colorMatters(bg)){return bg;}
bg=e[0].bgColor;if(bg){return bg;}
e=e.parent();}while(e.length>0&&e.get(0).tagName);return arguments[1]||'#FFF';}
function glowItem(duration,steps)
{function glowFunction(){if(step<steps){var c=[0,0,0];for(var i=0;i<3;i++){c[i]=parseInt(srcc[i])+(((parseInt(dstc[i])-parseInt(srcc[i]))/steps)*step);}
elem.css('background-color',printColor(c));step=step+1;setTimeout(glowFunction,timeoutstep);}else{elem.css('background-color',ocol);elem.attr('glowing',0);}}
var elem=$(this);if(elem.attr('glowing')==1){return;}
elem.attr('glowing',1);var ocol=$(elem).css('background-color');var dstc=parseColor(finalBackgroundColor(elem));if(!dstc){return;}
var step=0;var timeoutstep=parseInt(duration/steps,10);glowFunction.call(elem);}
var srcc=parseColor(arguments[0]||'#FFFF99');if(!srcc){return false;}
var duration=arguments[1]||1000;var steps=arguments[2]||50;if(duration<0||!duration){duration=1000;}
if(steps<0||!steps){steps=1;}
$(this).each(function(i,x){glowItem.call(x,duration,steps);});};})(jQuery);
