function previewScrap(oSource) {
    objSource  = window.document.getElementById(oSource);

    nwProp = "top=0,left=0,toolbar=no,status=no,resizable=yes,location=no,width=420,height=420";
    objDestiny = window.open("", "Preview", nwProp);

    objDestiny.document.write('<html>');
    objDestiny.document.write('  <head>');
    objDestiny.document.write('      <title>Preview</title>');
    objDestiny.document.write('      <style>body{font-family:courier new;font-size:10pt;}</style>');
    objDestiny.document.write('  </head>');
    objDestiny.document.write('  <body>');

    sourceValue = objSource.value.toString();
    finalValue  = sourceValue;

    finalValue = encodeHTMLTags(finalValue);
    finalValue = replaceSmilies(finalValue);
    finalValue = replaceColorTags(finalValue);
    finalValue = replaceFormatTags(finalValue);
    finalValue = replaceLinks(finalValue);

    finalValue = finalValue.replace(/\n/gm, "<br>");

    objDestiny.document.write(finalValue);

    objDestiny.document.write('<br><br><br><a href="#" onClick="javascript=window.close();">Fechar janela</a>');

    objDestiny.document.write('  </body>');
    objDestiny.document.write('</html>');
}

function encodeHTMLTags(value) {
    value = value.replace(/</gm, "&lt;");
    value = value.replace(/>/gm, "&gt;");
    return value;
}

function replaceSmilies(value) {
    value = value.replace(/(\[:X\])/gim,   '<img src="imagens/format_texto/angry.gif">');
    value = value.replace(/(\[:D\])/gim,   '<img src="imagens/format_texto/bigsmile.gif">');
    value = value.replace(/(\[\/\)\])/gim, '<img src="imagens/format_texto/confuse.gif">');
    value = value.replace(/(\[8\)\])/gim,  '<img src="imagens/format_texto/cool.gif">');
    value = value.replace(/(\[:P\])/gim,   '<img src="imagens/format_texto/funny.gif">');
    value = value.replace(/(\[:\(\])/gim,  '<img src="imagens/format_texto/sad.gif">');
    value = value.replace(/(\[:\)\])/gim,  '<img src="imagens/format_texto/smile.gif">');
    value = value.replace(/(\[:o\])/gim,   '<img src="imagens/format_texto/surprise.gif">');
    value = value.replace(/(\[;\)\])/gim,  '<img src="imagens/format_texto/wink.gif">');
    return value;
}

function replaceColorTags(value) {
    value = value.replace(/(\[(aqua|blue|fuchsia|gold|gray|green|lime|maroon|navy|olive|orange|pink|purple|red|silver|teal|violet|yellow)\])/gim, '<span style="color:$2;">');
    value = value.replace(/(\[\/(aqua|blue|fuchsia|gold|gray|green|lime|maroon|navy|olive|orange|pink|purple|red|silver|teal|violet|yellow)\])/gim, '</span>');
    return value;
}

function replaceFormatTags(value) {
    value = value.replace(/(\[(b|u|i)\])/gim, "<$2>");
    value = value.replace(/(\[\/(b|u|i)\])/gim, "</$2>");
    return value;
}

function replaceLinks(value) {
    value = value.replace(/(\[link=(.*)\](.*)\[\/link\])/gim, '<a href="$2">$3</a>');
    return value;
}
