Smiley = {
    list: {
        '(love)'  : 'love',
        '(yummy)' : 'miam',
        '(blush)' : 'redden',
        '(yawn)'  : 'yawn',
        '(puke)'  : 'vomito',
        ':@' : 'furax',
        '|-)': 'zzz',
        ':d' : 'great_smile', 
        ':D' : 'great_smile',
        ':p' : 'tongue_out', 
        ':P' : 'tongue_out',
        ':)' : 'smile',
        ';(' : 'cry',
        '8)' : 'cool',
        ':o' : 'surprised', 
        ':O' : 'surprised',
        ':(' : 'sad',
        '8|' : 'intello',
        ';)' : 'wink',
        ':\\' : 'undecided',
        ':X'  : 'silence', 
        ':x'  : 'silence',
        ':|' : 'without_voice',

        '(cocktail)'    : 'cocktail',
        '(wine)'        : 'wine',
        '(beer)'        : 'beer',
        '(cola)'        : 'coca',
        '(coffee)'      : 'coffee',
        '(starbucks)'   : 'starbucks',
        '(roll)'        : 'roll',
        '(donut)'       : 'donut',
        '(egg)'         : 'egg',
        '(burger)'      : 'burger',
        '(fries)'       : 'fries',
        '(steak)'       : 'steak',
        '(sushi)'       : 'sushi',
        '(chicken)'     : 'chicken',
        '(eat)'         : 'eat',
        '(birthday)'    : 'birthday',
        '(fire)'        : 'fire',
        '(gun)'         : 'gun',
        '(foot)'        : 'foot',
        '(ladybug)'     : 'ladybug',
        '(bikini)'      : 'bikini',
        '(heart)'       : 'heart',
        '(phone)'       : 'phone'
    },
    cache: false,
    path:  NV_STATIC + '/modules/wall/smiley/{0}.gif?v=1001',
    detect: function(selector) {
        if (typeof selector == 'undefined') selector = '.smiley';
        
        var elements = $$(selector);
        for (var i = 0, e; e = elements[i]; i++) {
            e.set('html', Smiley.replace(e.get('text')));
            e.removeClass('smiley');
        }
    },
    replace: function(text) {
        // Build the cache
        if (!Smiley.cache) {
            Smiley.cache = new Array();
            for (var smiley in Smiley.list) {
                Smiley.cache.push({
                    regexp: new RegExp(smiley.escapeRegExp(), 'g'),
                    img: '<img title="' + smiley + '" alt="' + smiley + '" class="smiley" src="' + Smiley.path.replace('{0}', Smiley.list[smiley]) + '" width="16" height="16" />'
                });
            }
        }

        for (var i = 0, smiley; smiley = Smiley.cache[i]; i++) {
            text = text.replace(smiley.regexp, smiley.img);
        }
        return text;
    }
}
