
// JSmile for jQuery - Andrea Giammarchi [webreflection.blogspot.com] - V0.4
jQuery.fn.extend({
	smile: (function(){
		function smile(show){
			show = !arguments.length || !!show;
			this.each(function(i, firstChild){
				jQuery.each(firstChild.childNodes, function(i, firstChild){
					switch(firstChild.nodeType){
						case	1:
							show ? jQuery(firstChild).smile(show) : smile.remove(firstChild);
							break;
						case	3:
							if(show && !smile.nodeName[firstChild.parentNode.nodeName.toLowerCase()])
								smile.add(firstChild);
							break;
					}
				});
			});
			return	this;
		};
		smile.add	= function(firstChild){
			var	parentNode	= firstChild.parentNode,
				nodeValue	= firstChild.nodeValue,
				i           = 0,
				length		= 0,
				img;
			nodeValue.replace(
				smile.RegExp,
				function(createTextNode, pos){
					if(++length < smile.max){
                     			createTextNode = createTextNode.toLowerCase();
    						img             = new Image();
    						img.className   = smile.className;
						if(createTextNode==':)' || createTextNode==';)')
    							img.src         = "images/smile/2.gif";
						else if(createTextNode=='8-)')
							img.src         = "images/smile/1.gif";
						else if(createTextNode==':o')
							img.src         = "images/smile/3.gif";
						else if(createTextNode==':x')
							img.src         = "images/smile/4.gif";
						else if(createTextNode==':d')
							img.src         = "images/smile/5.gif";
						else if(createTextNode==':p')
							img.src         = "images/smile/6.gif";
                            img.alt         = img.title = createTextNode;
                            smile.list[createTextNode]  = img;
                        
						jQuery(firstChild).before(document.createTextNode(nodeValue.substring(i, pos))).before(img);
						i   = pos + createTextNode.length;
					}
				}
			);
			if(i)
				jQuery(firstChild).before(document.createTextNode(nodeValue.substring(i))).remove();
		};
		smile.remove	= function(firstChild){
			jQuery(firstChild).find("img." + smile.className).each(function(i, firstChild){
				jQuery(firstChild).replaceWith(document.createTextNode(firstChild.alt || firstChild.title));
			});
		};
        smile.max       = 20;
        smile.list      = {};
        smile.className = "jsmile";
        smile.nodeName  = {"code":1,"noscript":1,"pre":1,"script":1,"style":1};
        smile.RegExp    = /:arrow:|:cry:|:evil:|:geek:|:idea:|:lol:|:mrgreen:|:oops:|:roll:|:shock:|:twisted:|:ugeek:|8-\)|:o|:x|:\||:!:|:\(|:\)|:\?:|:\?|:D|:P|;\)/g;
        return  smile;
    })()
});

